我需要在windows中创建一个批处理文件,以解析文件夹中所有可用的文件名,并将符合某些条件的文件移动到文件夹中。我已经使用FOR命令创建了循环周期,并将文件名设置为一个变量。现在我需要检查文件名的变量中有多少个"-“连字符;如果这个字符出现的次数超过10个,那么文件就不应该被移动。此外,我还需要检查文件名中是否有空格:同样,在这种情况下,文件不能移动。请注意:我可以用哪种方式创建脚本来检查变量中假设的出现次数和空格字符的存在?
非常感谢
发布于 2015-06-30 03:34:51
如果我没理解错的话,你不会真的想知道一个名字有多少个假设,而只是想知道这个名称是否有超过10个假设。这可以通过for /F命令的"tokens=12 delims=-"选项轻松实现:
EDIT:根据注释中声明的新请求修改的代码。新的代码检查名称是否恰好包含10个连字符,并且不包含空格。
@echo off
setlocal
for %%a in (one-two-three-four-five-six-seven-eight-nine-end.txt
one-two-three-four-five-six-seven-eight-nine-ten-end.txt
one-two-three-four-five-six--eight-nine-ten-end.txt
one-two-three-four-five---eight-nine-ten-end.txt
one-two-three-four-five----nine-ten-end.txt
one-two-three-four-five-----ten-end.txt
one----------end.txt
----------.txt
one-two-three-four-five-six-seven-eight-nine-ten-eleven-end.txt
"one-two-three-four-five-SIX SEVEN--eight-nine-ten-end.txt") do (
set "fileName=%%~a"
call :checkName
)
goto :EOF
:checkName
echo Checking "%fileName%"
set "result=Don't have 10 hypens"
for /F "tokens=11,12 delims=-" %%a in ("%filename:--=X-X-X%") do (
if "%%a" neq "" if "%%b" equ "" set "result=Name correct"
)
for /F "tokens=2" %%a in ("%fileName%") do if "%%a" neq "" set "result=Include space"
echo %result%
exit /Bhttps://stackoverflow.com/questions/31121583
复制相似问题