【发布时间】:2020-03-09 16:55:59
【问题描述】:
我给你写信是因为我需要创建一个批处理文件,它允许我重命名 .pdf 中的许多文件,只保留前 50 个字符。
我试过这个:
for %i in (*.txt) do (set fName=%i)
ren %fName% %fName:~0,-11%.txt
但这只会删除最后 11 个字符。 我试图修改这段代码,但我无法做我需要的。
我认为对于比我更专业的人来说这是一件非常容易的事情,所以我问你是否可以帮助我。
提前致谢。
我在下面插入更正后出现的错误:
C:\Users\---\Desktop\Conversione PDFA>for %fname:~0,50% in (*.pdf) do (set fname=%~ni)
graeiojpoghnpiofsdnpibnwapobnslnsdlekpfèwekrgpjbm was unexpected at this time.
C:\Users\---\Desktop\Conversione PDFA>for %fname:~0,50% in (*.pdf) do (set fname=%~ni)
graeiojpoghnpiofsdnpibnwapobnslnsdlekpfèwekrgpjbm was unexpected at this time.
C:\Users\---\Desktop\Conversione PDFA>for %fname:~0,50% in (*.pdf) do (set fname=%i)
graeiojpoghnpiofsdnpibnwapobnslnsdlekpfèwekrgpjbm was unexpected at this time.
C:\Users\---\Desktop\Conversione PDFA>ren %fName% !fname:~0,50!.pdf
The syntax of the command is incorrect.
C:\Users\---\Desktop\Conversione PDFA>ren %fName% %!fname:~0,50!.pdf
The syntax of the command is incorrect.
【问题讨论】:
-
删除最后 11 个字符正是您编码的内容。阅读
set /?的输出以了解有关子字符串处理的更多信息。 -
提示 #1:
%fname:~0,50%。提示 #2set fname=%%~ni。提示 #3setlocal enabledelayedexpansion与!fname:~0,50!.txt结合在 for 循环内部,而不是外部。 -
...在结束循环之前不要忘记
endlocal!请注意,从批处理文件中,您还需要将%i更改为%%i,然后我建议将!fname:~0,50!.txt更改为!fname:~0,50!%%~xi以获得更好的可移植性。 -
您好,感谢您的反馈。我试图做出您推荐的更正,但我只收到语法错误。我很可能不清楚在哪里进行更改。你能支持我吗?谢谢
标签: windows batch-file command line prompt