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-ID: 50250

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

Ausgedruckt am: 22.11.2024 um 15:11 Uhr

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
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.?
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?
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
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?
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?
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
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.
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