我正在做一些批处理编程,我使用感叹号!对于计数器变量
因此,每当我使用!count!
它时,它都会在该变量之后直接添加一个讨厌的空间。因为我想用它来重命名文件,所以很烦人
这是在 .jpg 之前插入空格的完整代码
FOR %%F IN (".") DO (
MOVE "%%F" "%MyDir%-file-0!count!.jpg"
SET /a count=!count!+1
)
任何想法如何避免空间?
我正在做一些批处理编程,我使用感叹号!对于计数器变量
因此,每当我使用!count!
它时,它都会在该变量之后直接添加一个讨厌的空间。因为我想用它来重命名文件,所以很烦人
这是在 .jpg 之前插入空格的完整代码
FOR %%F IN (".") DO (
MOVE "%%F" "%MyDir%-file-0!count!.jpg"
SET /a count=!count!+1
)
任何想法如何避免空间?
BAT 肯定非常古怪。也许是 "+1" 和 ")" 之间的空格?您的脚本是否包含 DelayedExpansion?这通常是必要的。
我建议尽管使用子程序。它有一些非常有用的参数编辑能力。看“呼叫/?”。
特别是,说 call :MySub "File name.txt" 在 "MySub" 中,%1 将是 "File name.txt" - 包括引号。但是 %~1 会去掉引号。这使您可以很好地处理带有空格的文件名。所以“我的路径有空格\%~1”会导致“我的路径有空格\文件名.txt” - 在整个字符串周围有一组引号。您还可以拆分文件名和扩展名。
@echo off
setlocal ENABLEDELAYEDEXPANSION
set count=0
set MyDir=MyDir
FOR %%F IN ("*.*") DO call :MoveThatFile %%F
goto :EOF
:MoveThatFile
echo MOVE "%~1" "%MyDir%-file-0!count!.jpg"
SET /a count=!count!+1
goto :EOF
如果这真的是完整的代码,那么一切都很糟糕,您没有连接命令,而是尝试使用变量 !COUNT! 在设置变量值之前。
除此之外,不包含变量是一种不好的做法。
@Echo OFF
Setlocal enabledelayedexpansion
FOR %%F IN (*) DO (
SET /A "Count+=1"
MOVE "%%F" "%MyDir%-file-0!COUNT!.jpg"
)
Pause&Exit