批量重命名在变量前放置一个空格

批量重命名在变量前放置一个空格

我正在将一堆以TB-Practice开头的文件重命名为P-

到目前为止我有这批

pushd %~dp0
for %%i in ("TB-Practice*.pdf") do (set fname=%%i) & call :rename
goto :eof
:rename
::Cuts off 1st eleven chars, then appends prefix
::P- is put in front of the file name
ren "%fname%" "P-%fname:~11%"
goto :eof

P-Filename不幸的是,我最终得到的结果P- Filename是与我当前使用的这些文件的格式不兼容。

我做错了什么?声明变量时任何地方都没有空格。

答案1

如果原始文件名后面都包含空格TB-Practice,则拆分起来会更容易。

在命令行上:

@for %A in ("TB-Practice *.pdf") do @for /f "tokens=1*" %B in ("%A") do @echo Ren "%A" "P-%C"

或者在批处理文件中:

pushd %~dp0
for %%A in ("TB-Practice *.pdf") do for /f "tokens=1*" %%B in ("%%A") do Ren "%%A" "P-%%C" 
popd

答案2

愚蠢的我意识到我发帖说批处理不会删除该空格TB-Practice,所以才会剩下一个空格。已解决。

相关内容