尝试根据TXT文件中的信息来重命名PDF和TXT

时间:2019-07-08 22:40:02

标签: windows batch-file cmd

我的代码能够重命名.txt文件,但无法将pdf定位为使用从.txt文件中提取的相同信息同时重命名。

我试图放

for /f "delims=" %%i in ('dir /a-d/b *.pdf') do (
   rename "!fname!" "!nname!.pdf"

在我认为它们可能起作用的不同位置,但是如果它位于.txt文件的另一个/ f“ delims =”块内,则该文件将不运行,并且如果不在该目录中,则它将无法获取相同的名称

setlocal
cd File Location


::Next Targets .txt files, makes variables, modifies the variable, and renames the .txt
for /f "delims=" %%i in ('dir /a-d/b *.txt') do (
   set "nname="
   set "fname=%%~i"
   for /f "usebackq skip=4 delims=" %%f in ("%%~i") do if not defined nname set "nname=%%f"
   setlocal enabledelayedexpansion
   set "nname=!nname:~12,10!"
   rename "!fname!" "!nname!.txt"
)
::I tried to pull the same variables while targeting the .pdf files, but it wouldn't get the variables.
for /f "delims=" %%i in ('dir /a-d/b *.pdf') do ( 
   rename "!fname!" "!nname!.pdf"
)


endlocal
pause

我希望第二个块能够从第一个块中提取相同的变量(文件名),但是它什么也没做。

1 个答案:

答案 0 :(得分:0)

好吧,我想出了如何重命名pdf,因为txt不必重命名,而是从中提取信息来重命名pdf

setlocal
cd Directory
for /f "delims=" %%i in ('dir /a-d/b *.txt') do (
   set "nname="
   set "fname=%%~i"
   for /f "usebackq skip=5 delims=" %%f in ("%%~i") do if not defined nname set "nname=%%f"
   setlocal enabledelayedexpansion
   set "nname=!nname:~12,10!"
   set "fname=!fname:~0,-4!"
   rename "!fname!.pdf" "!nname!.pdf"
)
endlocal
pause

这将删除变量的结尾并搜索+ .pdf重命名