批处理 Windows - 如何创建一个循环来重命名不同文件夹中的许多文件?

Batch Windows - How to create a loop to rename many files in different folders?

我有一个 PDF 文件(都在同一个文件夹中),我需要从文件名中提取 3 个有用的信息。

我在另一个位置有 .jpg 文件(每个文件夹 1 张图片),我需要使用从 PDF 中获取的这些信息重命名。

我的脚本能够找到信息、存储和重命名,但它只适用于目录中的第一个文件,然后停止。 我需要循环 运行 直到没有更多的 PDF 文件可以从中获取信息或者没有更多的 .jpg 文件可以重命名。

有人可以帮我循环制作这个脚本 运行 吗?

echo off
setLocal EnableDelayedExpansion

rem User input
SET /P datework= Please type the date you want to work (format yyyymmdd):

rem Folder where the PDFs are located - extract the useful information from file name
cd /D C:\Users\A\Desktop\A_tests\QC\PDF\%datework%\

for %%i in (*.pdf) do (
    set RcvLn=%%i
    set RcvLn=!RcvLn:~0,4!
    set GunStn=%%i
    set GunStn=!GunStn:~5,4!
    set Node=%%i
    set Node=!Node:~10,4!
)

rem Rename the pictures using the values stored on the variables
xcopy /Y "C:\Users\A\Desktop\A_tests\QC\UHD73\Node Deployment\%datework%\Node %Node%\*.jpg" "C:\Users\A\Desktop\A_tests\QC\UHD73\Node Deployment\%datework%\Node%Node%_RL%RcvLn%_GS%GunStn%.jpg"

您在循环内为每个文件设置每个变量,然后在循环外执行 xcopy,这只会执行一次 xcopy。所以我们宁愿在循环中执行 xcopy。

echo off
setLocal EnableDelayedExpansion

rem User input
SET /P datework= Please type the date you want to work (format yyyymmdd):

rem Folder where the PDFs are located - extract the useful information from file name
cd /D C:\Users\A\Desktop\A_tests\QC\PDF\%datework%

for %%i in (*.pdf) do (
    set RcvLn=%%i
    set RcvLn=!RcvLn:~0,4!
    set GunStn=%%i
    set GunStn=!GunStn:~5,4!
    set Node=%%i
    set Node=!Node:~10,4!
    echo xcopy /Y "C:\Users\A\Desktop\A_tests\QC\UHD73\Node Deployment\!datework!\Node !Node!\*.jpg" "C:\Users\A\Desktop\A_tests\QC\UHD73\Node Deployment\!datework!\Node!Node!_RL!RcvLn!_GS!GunStn!.jpg"
)