如何在提示Windows中保留文件名的前50个字符

我写信给你,是因为我需要创建一个批处理文件,该文件允许我重命名.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=%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.

bati0229 回答:如何在提示Windows中保留文件名的前50个字符

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
有关!fname!而非%fname%的用法,请参见delayed expansion

注意:出于安全原因,我通过回显来“撤消” ren命令。验证后,这正是您想要的,只需删除ECHO

本文链接:https://www.f2er.com/3107085.html

大家都在问