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

Printed on: April 20, 2024 at 02:04 o'clock

Member: Biber
Biber Jan 30, 2007 at 17:33:56 (UTC)
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
Member: Netscape
Netscape Jan 30, 2007 at 19:25:42 (UTC)
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.?
Member: Biber
Biber Jan 30, 2007 at 20:07:46 (UTC)
Goto Top
Hmmm... und wenn Du das zum Testen eingefügte fett gedruckte ECHO entfernst?
Member: Netscape
Netscape Jan 30, 2007 at 20:22:37 (UTC)
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
Member: Biber
Biber Jan 30, 2007 at 21:07:11 (UTC)
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?
Member: Netscape
Netscape Jan 30, 2007 at 21:19:57 (UTC)
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?
Member: Biber
Biber Jan 31, 2007 at 10:53:48 (UTC)
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
Member: Netscape
Netscape Feb 01, 2007 at 14:04:00 (UTC)
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.
Member: Netscape
Netscape Feb 02, 2007 at 14:47:28 (UTC)
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