netscape
Goto Top

Batchskript zum Datenbackup mit Ordnerstruktur

Hi,
habe noch ein Problem mit einem Skript.

Hier der Original Thread:


Biber hat mir damit schon sehr geholfen, allerdings hab ich noch Probleme damit. Das Skript will irgendwie nicht laufen.

Original:
- >for /f "delims=" %i in ('dir /a:d /s /b "D:\*old*"') do @echo "%~nxi"|find /i "old">nul && @xcopy /y "%~i\*.*" "x:\Archiv%~pi"

von mir verändert:
- >for /f "delims=" %i in ('dir /a:d /s /b "%laufwerk%\%filter%"') do @echo "%~nxi"|find /i "%filter%">nul && @xcopy /y "%~i\*.*" "x:\Archiv%~pi"

Ich habe noch die Variablen Laufwerk und Filter eingebaut, damit man auch andere Ordner wähln kann. Allerdings will es nicht so ganz.

Content-Key: 50250

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

Ausgedruckt am: 28.03.2024 um 12:03 Uhr

Mitglied: Biber
Biber 30.01.2007 um 18:33:56 Uhr
Goto Top
Moin Netscape,

ich lege es mal als Batch an, dann wird es lesbarer (hoffe ich).

Ich fang mal mit der oberen Zeile an [am CMD-Prompt:]
for /f "delims=" %i in ('dir /a:d /s /b "D:\*old*"') do @echo "%~nxi"|find /i "old">nul && @Xcopy /y "%~i\*.*" "x:\Archiv%~pi"  
... wäre als (formatierter) Batch-Oneliner mit einem ECHO zum Testen:
::----------DoXcopyAllWithOld.bat
@for /f "delims=" %%i in ('dir /a:d /s /b "D:\*old*"') do @(  
                   echo "%%~nxi"|find /i "old">nul && @<b>ECHO</b> Xcopy /y "%%~i\*.*" "x:\Archiv%%~pi"  
)

Wenn wir den noch umbauen, dass der als
- Parameter %1 Startlaufwerk/Startpfad annimmt und als
- Parameter %2 den Teilstring "old" (oder was auch immer), der im Ordnernamen enthalten sein soll
::----------DoXcopyWith.bat
@for /f "delims=" %%i in ('dir /a:d /s /b "%1\*%2*"') do @(  
                   echo "%%~nxi"|find /i "%2">nul && @<b>ECHO</b> Xcopy /y "%%~i\*.*" "x:\Archiv%%~pi"  
)

So weit, so ungetestet.

HTH
Biber
Mitglied: Netscape
Netscape 30.01.2007 um 20:25:42 Uhr
Goto Top
Also soweit läuft das Skript, allerdings sagt er mir, dass die Dateien kopiert wurden, wenn ich aber in dem Ornder nachschaue ist nix drin.?
Mitglied: Biber
Biber 30.01.2007 um 21:07:46 Uhr
Goto Top
Hmmm... und wenn Du das zum Testen eingefügte fett gedruckte ECHO entfernst?
Mitglied: Netscape
Netscape 30.01.2007 um 21:22:37 Uhr
Goto Top
Ok, jetzt funktionierts. Nur noch eine Kleinigkeit.

Wie muss die %%~pi Variable lauten, damit er auch den Old Ordner kopiert?

Es wird zwar alles kopiert, aber den Old Ordner verwirft er.

Soll heißen:

Ordner1--->Ordner2--->Old

inhalt wird an backupfad kopiert

Backupordner\Ordner1-->Ordner2\inhalt von Old
Mitglied: Biber
Biber 30.01.2007 um 22:07:11 Uhr
Goto Top
Dann müsstest Du ändern:

STREICHE: ....Xcopy /y "%%~i\*.*" "x:\Archiv%%~pi"
SETZE: ....Xcopy /y "%%~dpi" "x:\Archiv%%~pi\"

[ungetestet]

HTH Biber

P.S. Wäre nicht überhaupt ein MOVE besser als ein Kopieren?
Mitglied: Netscape
Netscape 30.01.2007 um 22:19:57 Uhr
Goto Top
Kannst du mir den unterschied zwischen

"%%~i\*.*" & "%%~dpi"

erklären?

Mit Move müsste das dann so lauten oder?
Move /y "%%~dpi" "x:\Archiv%%~pi\"

Eine andere Möglichkeit wäre auch noch ein setzen des Archiv Attributs. Das wäre wesentlich genauer oder?
Mitglied: Biber
Biber 31.01.2007 um 11:53:48 Uhr
Goto Top
Moin NetScape,

Wenn der Ordner "D:\test\bla\blubb\old27" heißt:

"%%~i\*.*" --------> würde expandieren zu vollständigem Ordner-Pfad+"\*.*" i.e "D:\test\bla\blubb\old27\*.*"


"%%~dpi" --> würde expandieren zu D=Drive + p=Pfad des Ordner-Parent-Namens i.e "D:\test\bla\blubb"

Das Move demnach würde expandieren zu:
Move /y "%%~dpi" "x:\Archiv%%~pi\" ----------->
Move /y "D:\test\bla\blubb" "x:\Archiv\test\bla\blubb"

Richtiger wäre also:
Move /y "%%~dpnxi" "x:\Archiv%%~pnxi\" ----------->
Dieses Move würde expandieren zu:
Move /y "D:\test\bla\blubb\old27" "x:\Archiv\test\bla\blubb\old27"


Gruß
Biber
Mitglied: Netscape
Netscape 01.02.2007 um 15:04:00 Uhr
Goto Top
Hi,

dies hier funktioniert leider nicht. Da kopiert er dann nichts mehr.

STREICHE: ....Xcopy /y "%%~i\*.*" "x:\Archiv%%~pi"
SETZE: ....Xcopy /y "%%~dpi" "x:\Archiv%%~pi\"

Hab auch schon probiert nur den Pfad mitzunehmen

Xcopy /y "%%~pi" "x:\Archiv%%~pi\"

aber das geht auch nicht.
Mitglied: Netscape
Netscape 02.02.2007 um 15:47:28 Uhr
Goto Top
Ok,
hab´s hinbekommen. musste nur das > nul vor dem Xcopy entfernen. Dann hat er den Old Ordner miterstellt.

Vielen Dank an Biber, der sich wie immer sehr bemüht hat und mir sehr geholfen hat.

Danke Biber