Попытка переименовать файлы PDF и TXT на основе информации в файле TXT - PullRequest
0 голосов
/ 09 июля 2019

Мой код может переименовывать файл .txt, но не может одновременно переименовать файл pdf с той же информацией, извлеченной из файла .txt.

Я пытался поместить

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

в разных местах, где, я думаю, они могут работать, но если он находится внутри другого блока / f "delims =" для файлов .txt, он не запускается, а если он находится снаружи, он выигрываетНе могу получить одно и то же имя.

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 голосов
/ 11 июля 2019

Ну, я выяснил, как переименовать 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 для переименования

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...