2012-03-26 3 views
0

Ich habe derzeit eine Batch-Datei, die eine Dateiliste aus Ordner A liest, wenn es über ein bestimmtes Datum ist kopiert es in Ordner B und löscht das Original.Batch-Datei-Backup in Windows, verschachtelte Ordner/Dateien neu erstellen

Das Problem ist, dass ich möchte, dass die Batch-Datei die Dateistruktur in Ordner A neu erstellen, und ich bin mir nicht sicher, wie dies zu tun ist. Hier ist der Code:

echo off 
echo REM :- THE FOLLOWING FILES ARE OLDER THAN 7 DAYS AND CAN BE MOVED TO BACKUP -: 
pause 
forfiles /p c:\test\one /s /m *.gif /c "cmd /c dir /b/s/t:w @path" 
echo. 
echo REM :- CONTINUE TO MOVE THOSE FILES TO THE BACKUP LOCATION -: 
pause 
forfiles /p c:\test\one /s /m *.gif /c "cmd /c mkdir c:\test\two\@relpath" 
echo. 
pause 
forfiles /p c:\test\one /s /m *.gif /c "cmd /c copy /-y @path c:\test\two\@relpath" 
pause 
echo. 
echo REM :- THE FOLLOWING FILES EXIST IN THE BACKUP LOCATION -: 
echo. 
pause 
dir "c:\test\two" /a/s/b /o:gn 
echo. 
echo REM :- CONTINUE TO DELETE THOSE BACKUPS -: 
pause 
rd /s "c:\test\two" 
echo. 
pause 

Das Problem ist, dass @relpath den gesamten Pfad und Dateinamen zu nehmen scheint, so in Ordnern BI mit jedem Dateinamen in einem Ordner von ihrem eigenen Namen am Ende (zB ‚filename.gif‘ innen ein Ordner mit dem gleichen Namen). Wie kann ich den Dateinamen aus dem Pfad entfernen, eine Dateistruktur in Ordner B basierend darauf erstellen und die Datei dann an die richtige Stelle kopieren?

Dank

Antwort

2

können Sie xcopy verwenden, um die Dateistruktur mit dem /T Schalter neu zu erstellen. Sie müssen auch den Schalter /E verwenden, um leere Verzeichnisse und Unterverzeichnisse zu kopieren.

Bei einer Eingabeaufforderung cmd xcopy /? für Hilfe zu allen Schaltern. Hoffe das hilft!

+0

Danke das ist sehr hilfreich und genau das, was ich brauchte. – RingTailedLemur

+0

Großartig, froh, dass ich helfen konnte. Wenn dies Ihre Frage beantwortet hat, können Sie die Antwort akzeptieren, indem Sie auf das Häkchen klicken. –

0

Sie können schreiben Sie es mögen:

forfiles /p c:\test\one /s /m *.gif /c "cmd /c mkdir c:\test\two\@relpath\.."

Dies würde die resultierende Pfad zum übergeordneten Ordner sichern aus den Dateinamen zu verhindern verwendet.

Verwandte Themen