我写信给您,是因为我需要创建一个批处理文件,该文件允许我重命名.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.
for %fname:~0,50% ...
:只是没有。for %i in (*.pdf) do set fname=%i
:是。
您要重命名多个PDF,因此ren
命令应位于循环内。这是可能的,但是在单个命令行中却很丑陋且容易出错(尤其是当您还不cmd
语法还不够坚定的时候),所以我不建议这样做。最好的方法是使用批处理文件。它更具可读性和可维护性。
@echo off
setlocal enabledelayedexpansion
for %%i in (*.pdf) do (
set "fname=%%~ni"
ECHO ren "%%~fi" "!fname:~0,50!%%~xi"
)
请参阅for /?
了解修饰符%%~ni
等。有关delayed expansion的用法,请参见!fname!
,而不是%fname%
NOTE:出于安全原因,我通过回显使其“撤防”了ren
命令。验证后,这正是您想要的,只需删除ECHO