Pfadanlage in Batch unter WinXP
Hallo Forum,
ich habe hier ein Programm, das Dateien in einen Ordner kopiert, dessen erste 4 Zeichen den ersten 4 Zeichen des Dateinamens entsprechen. Ich will das Programm erweitern, und zwar soll es im Zielverzeichnis einen Pfad analog oben anlegen, in den dann das File kopiert wird. Aber nur, wenn es den Pfad noch nicht gibt. Ansonsten sollen die Files wie bisher in die bestehenden Pfade kopiert werden, also in die, für die ein Match existiert zwischen Datei- und Padnamen.
Beispiel (siehe dazu auch Batchprogramm unter WinXP):
Wenn zusätzlich zu o.g. Beispiel eine Datei 3000_a.png existiert, im Zielverzeichnis aber kein Pfad, der mit 3000 beginnt, dann soll der Pfad d:\test\3000 angelegt werden und anschließend das File 3000_a.png dort hinein kopiert werden.
Wie und wo muss ich das in das Coding einsetzen?
Vielen Dank.
Hier mein aktuelles Coding:
ich habe hier ein Programm, das Dateien in einen Ordner kopiert, dessen erste 4 Zeichen den ersten 4 Zeichen des Dateinamens entsprechen. Ich will das Programm erweitern, und zwar soll es im Zielverzeichnis einen Pfad analog oben anlegen, in den dann das File kopiert wird. Aber nur, wenn es den Pfad noch nicht gibt. Ansonsten sollen die Files wie bisher in die bestehenden Pfade kopiert werden, also in die, für die ein Match existiert zwischen Datei- und Padnamen.
Beispiel (siehe dazu auch Batchprogramm unter WinXP):
Wenn zusätzlich zu o.g. Beispiel eine Datei 3000_a.png existiert, im Zielverzeichnis aber kein Pfad, der mit 3000 beginnt, dann soll der Pfad d:\test\3000 angelegt werden und anschließend das File 3000_a.png dort hinein kopiert werden.
Wie und wo muss ich das in das Coding einsetzen?
Vielen Dank.
Hier mein aktuelles Coding:
echo off & setlocal
set "Quelle=c:\Temp\Test"
set "Ziel=d:\Test"
set "Prot=%Quelle%\Prot_%date:~-4%-%date:~-7,2%-%date:~-10,2%_%time:~,2%%time:~3,2%%time:~6,2%.txt"
set "Prot=%Prot: =0%"
del "%Prot%" 2>nul
pushd "%Quelle%"
for /f "tokens=1* delims=_" %%i in ('dir /b /a-d e*_*.* 2^>nul') do (
set "Done="
for /d %%a in ("%Ziel%\%%i*") do if not defined Done (
copy "%%i_%%j" "%%a" >nul
set "Done=True"
)
)
popd
set "Liste=%Quelle%\Liste.txt"
copy nul "%Liste%"
for /f "tokens=1* delims=_" %%i in ('dir /b /a-d e*_*.* 2^>nul') do findstr "%%i" "%Liste%" || (
>>"%Liste%" echo %%i
for /d %%a in ("%Ziel%\%%i*") do (
echo %%~fa
dir /b /a-d "%%a" 2>nul
echo\
)
)>>"%Prot%"
Please also mark the comments that contributed to the solution of the article
Content-Key: 216302
Url: https://administrator.de/contentid/216302
Printed on: April 24, 2024 at 21:04 o'clock
6 Comments
Latest comment