1

我正在做一些批处理编程,我使用感叹号!对于计数器变量

因此,每当我使用!count!它时,它都会在该变量之后直接添加一个讨厌的空间。因为我想用它来重命名文件,所以很烦人

这是在 .jpg 之前插入空格的完整代码

FOR %%F IN (".") DO ( MOVE "%%F" "%MyDir%-file-0!count!.jpg" SET /a count=!count!+1 )

任何想法如何避免空间?

4

2 回答 2

2

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
于 2012-11-25T00:22:39.833 回答
0

如果这真的是完整的代码,那么一切都很糟糕,您没有连接命令,而是尝试使用变量 !COUNT! 在设置变量值之前。

除此之外,不包含变量是一种不好的做法。

@Echo OFF

Setlocal enabledelayedexpansion

FOR %%F IN (*) DO (
    SET /A "Count+=1"
    MOVE "%%F" "%MyDir%-file-0!COUNT!.jpg" 
) 

Pause&Exit
于 2012-11-25T11:14:41.030 回答