2017-11-23 4 views
0

Ich habe PDF-Dateien an einem Ort (alle im selben Ordner), die ich brauche 3 nützliche Informationen aus dem Dateinamen.Batch Windows - Wie erstellt man eine Schleife, um viele Dateien in verschiedenen Ordnern umzubenennen?

Und ich habe .jpg Dateien an einem anderen Ort (1 Bild pro Ordner), die ich mit diesen Informationen aus dem PDF umbenennen muss.

Mein Skript kann die Informationen finden, speichern und umbenennen, aber es funktioniert nur für die erste Datei in einem Verzeichnis und stoppt dann. Ich muss es in einer Schleife laufen lassen, bis es entweder keine PDF-Dateien mehr gibt, um Informationen aus OR zu nehmen, und keine .jpg-Dateien mehr, die umbenannt werden sollen.

Kann mir jemand helfen, dieses Skript in einer Schleife laufen zu lassen?

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" 

Antwort

0

Sie setzen jede Variable innerhalb der Schleife für jede Datei, aber dann tun Sie das Xcopy außerhalb der Schleife, die die xcopy nur einmal tun. Also machen wir lieber den xcopy innerhalb der Schleife.

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" 
) 
+0

Vielen Dank Gerhard! So eine einfache Lösung ... Ich denke, es war letzte Nacht zu spät für mich, um es zu sehen. : P :) –

Verwandte Themen