115129
Goto Top

Bestehender Code erweitern - per find Verzeichnis finden und kopieren

Hallo,

kann mir bitte jemand unter die Arme greifen und den Fehler finden wieso mein Code nicht funktioniert wie ich das gerne hätte?

Ich habe zwei Verzeichnisse:
D:\Test
D:\Test_aktuell

Über ein externes Programm wird meine Batch gestartet und Argumente mit übergeben.
Es wird der Inhalt des übergebenen Verzeichnisses gepackt und wenn größer als 2GB gesplittet, soweit so gut.

Mein bisheriger Code sieht wie folgt aus:
@echo off & setlocal 
For %%i in (A1,A2,B1,B3,B4,B5,C1,C2,C3,D1,D2,D3,D4,E1) do @if /i "%%i"=="%~1" Goto :%%i  
goto :eof

:D1
for %%i in ("%~2\..") do set "Name=%%~nxi"  
for %%i in ("%~2\..\..") do set "Directory=%%~nxi"  
D:\WinRAR\rar.exe a -v2000000 "J:\%Directory:~0,-8%\%Name%.rar" "%~dp2" -ep -x@ -df && rd "%~dp2" /s /q  
goto :eof


Nun möchte ich die Funktion erweitern, indem ich zuvor den Verzeichnisnamen prüfe ob ein Suchwort bzw. String unter D:\Test_aktuell\... vorhanden ist, wenn gefunden kopiere das Verzeichnis samt Inhalt nach E:\Archiv\Aktuell\
Anmerkung: Das Verzeichnis mit Inhalt unter D:\Test_aktuell\ darf erst gelöscht werden, wenn der Suchvorgang abgeschlossen und kopiert wurde.

Meine Anpassung dieht wie folgt aus:
@echo off & setlocal 
For %%i in (A1,A2,B1,B3,B4,B5,C1,C2,C3,D1,D2,D3,D4,E1) do @if /i "%%i"=="%~1" Goto :%%i  
goto :eof

:D1
for %%i in ("%~2\..") do set "Name=%%~nxi"  
for %%i in ("%~2\..\..") do set "Directory=%%~nxi"  
for /d %%a in ('dir "%Name%" ^|find "Today" ^|find "Yesterday"') do md "D:\Archiv\Aktuell\%Name%\" && copy "%~dp2" "D:\Archiv\Aktuell\%Name%\"  
D:\WinRAR\rar.exe a -v2000000 "J:\%Directory:~0,-8%\%Name%.rar" "%~dp2" -ep -x@ -df && rd "%~dp2" /s /q  
goto :eof


Nun besteht das Problem, dass mir nur das Verzeichnis unter E:\Archiv\Aktuell\%Name%\ erstellt wird, aber ohne Inhalt bzw. Dateien.

Führe ich den Code so aus...
@echo off & setlocal 
For %%i in (A1,A2,B1,B3,B4,B5,C1,C2,C3,D1,D2,D3,D4,E1) do @if /i "%%i"=="%~1" Goto :%%i  
goto :eof

:D1
for %%i in ("%~2\..") do set "Name=%%~nxi"  
for %%i in ("%~2\..\..") do set "Directory=%%~nxi"  
for /d %%a in ('dir "%Name%" ^|find "Today" ^|find "Yesterday"') do copy "%~dp2" "D:\Archiv\Aktuell\"  
D:\WinRAR\rar.exe a -v2000000 "J:\%Directory:~0,-8%\%Name%.rar" "%~dp2" -ep -x@ -df && rd "%~dp2" /s /q  
goto :eof
...wird lediglich der Inhalt bzw. die Dateien nach E:\Archiv\Aktuell\ kopiert, es fehlt allerdings das Verzeichnis wo sie reinkopiert werden sollen E:\Archiv\Aktuell\%Name%\

Ich hoffe dass ich mich verständlich ausgedrückt habe.

Danke schon mal für eure Hilfe. face-smile

Schöne Osterfeiertage.

Gruß,
Blattlaus

Content-Key: 369817

Url: https://administrator.de/contentid/369817

Printed on: April 16, 2024 at 21:04 o'clock

Member: Pjordorf
Pjordorf Mar 31, 2018 at 13:52:34 (UTC)
Goto Top
Hall0,

Zitat von @115129:
kann mir bitte jemand unter die Arme greifen und den Fehler finden wieso mein Code nicht funktioniert
Was und wie äußert sich den das nicht funktioniern deines Codes? Sollen wir das jetzt selbst herausfinden oder sagst du uns was deine Code falsch macht indem du uns z.B. Fehlermeldungen oder nicht erwartete Meldungen aufzeigst.

@echo off & setlocal
Als erstes mal das @echo OFF entfernen oder in @echon ON umbenennen. Das hilft beim Debugging schon fast zu 100%.


For %%i in
Da wir hier nicht wissen was in dein %%i bzw. %i% tatsächlich drin steht ist alles nur eine Raterei.

Nun möchte ich die Funktion erweitern
Dann testet man erstmal die Erweiterungen bis diese sauber und korrekt laufen bevor diese dann eingebaut werden.

Ich hoffe dass ich mich verständlich ausgedrückt habe.
Ich hoffe deine Gedanken auf deine Arbeit eingestellt zu haben.face-smile

http://www.robvanderwoude.com/batchfiles.php

Schöne Osterfeiertage.
Gleichfalls und viel Spass beim Debuggen

https://social.msdn.microsoft.com/Forums/en-US/f4677a66-548e-47a6-8e32-3 ...
http://www.robvanderwoude.com/battech_debugging.php
https://www.tutorialspoint.com/batch_script/batch_script_debugging.htm
https://stackoverflow.com/questions/165938/how-can-i-debug-a-bat-script

Gruß,
Peter