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

问题描述 投票:0回答:1

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

windows batch-file command line prompt
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.