2017-11-02 2 views
1

Ich bin ein totaler Anfänger und ich brauche etwas Hilfe, um einige Ordner mit Dateien von einem Server zu sichern.Wie kopieren Sie bestimmte Unterordner, falls vorhanden, in neue Ordner in einem Backup-Ordner mit einer Batch-Datei?

Ich muss einige Ordner auf meinem lokalen Computer kopieren.

Ordner zu kopieren sind wie diese

\\DistantServer\path\RandomFolder\Config\old 
\\DistantServer\path\Another Random Folder\Config\old 
... 

Diese alten Ordner kopiert werden soll:

D:\Backup\RandomFolder\old 
D:\Backup\Another Random Folder\old 

ich einige Codes versucht, aber ich bin nur Fehler mit.

Konnte mir jemand helfen?

+2

Bitte geben Sie uns ein Beispiel von dem, was Sie versucht haben, und die Fehler, wir können Ihnen dann helfen, dies zu verstehen und zu korrigieren. – LP154

Antwort

0

Diese Batchdatei sollte für die Aufgabe arbeiten:

@echo off 
setlocal EnableExtensions DisableDelayedExpansion 
set "SourceFolder=\\DistantServer\path" 
set "TargetFolder=D:\Backup" 

for /D %%I in ("%SourceFolder%\*") do (
    if exist "%%I\Config\Old\" (
     rd /Q /S "%TargetFolder%\%%~nxI\old" 2>nul 
     %SystemRoot%\System32\xcopy.exe "%%I\Config\Old" "%TargetFolder%\%%~nxI\old\" /C /E /H /I /K /Q /R /Y >nul 
    ) 
) 

endlocal 

Der Befehl FÜR Suche in Quellordner als mit Umgebungsvariable SourceFolder für nicht versteckt Unterordner definiert. Jedem gefundenen Unterordner wird ein vollständiger Pfad zugewiesen, der nicht mit einem umgekehrten Schrägstrich endet und niemals in doppelte Anführungszeichen eingeschlossen ist, um die Variable I zu referenzieren, die mit %%I referenziert wird.

Der Befehl IF prüft die Existenz des Unterordner Config\old in aktuellen Unterordner von Quellordner. Der gefundene Unterordner wird ignoriert, wenn er den Unterordner Config\old nicht enthält.

Auf Existenz Config\old in aktuellen Unterordner von Quelle den RD Befehl Ordnern zunächst auf seiner unabhängige Existenz Ordner ruhig mit allen Unterordner des entsprechenden Ziels entfernt, um sicherzustellen, dass die Kopie in 1 nächste Ergebnisse getan: 1 Ordner kopieren. Der Befehl RD kann entfernt werden, wenn der Zielordner höchstwahrscheinlich nie existiert, bevor der Kopiervorgang abgeschlossen ist oder wenn der vorhandene Inhalt des Zielordners mit dem aktuellen Inhalt des Quellordners zusammengeführt werden soll.

%%~nxI verweist auf den aktuellen Unterordner im Quellordner ohne Pfad, d. H. Ohne Ordnerpfad, wie mit der Umgebungsvariablen definiert.

Der Befehl XCOPY kopiert den gesamten Ordner Config\old in aktuellen Unterordner von Quellenordner in einen Unterordner old im Zielordner, wie durch die Umgebungsvariable TargetFolder definiert. Die gesamte Verzeichnisstruktur zum entsprechenden Zielordner wird automatisch von XCOPY erstellt, falls nicht bereits vorhanden, weil die Zielspezifikation mit einem Backslash endet, der eine eindeutige Angabe für XCOPY darstellt, dass die Zielzeichenfolge ein Verzeichnis angibt.

Hinweis: Der gesamte Code oben ohne Befehl RD könnte auch zu einer einzigen Befehlszeile optimiert werden.

@for /D %%I in ("\\DistantServer\path\*") do @if exist "%%I\Config\Old\" %SystemRoot%\System32\xcopy.exe "%%I\Config\Old" "D:\Backup\%%~nxI\old\" /C /E /H /I /K /Q /R /Y >nul 

Einzelbefehlszeile mit dem Befehl RD:

@for /D %%I in ("\\DistantServer\path\*") do @if exist "%%I\Config\Old\" rd /Q /S "D:\Backup\%%~nxI\old" 2>nul & %SystemRoot%\System32\xcopy.exe "%%I\Config\Old" "D:\Backup\%%~nxI\old\" /C /E /H /I /K /Q /R /Y >nul 

für die verwendeten Befehle verstehen und wie sie arbeiten, eine Eingabeaufforderung öffnen, führen Sie dort die folgenden Befehle ein, und lesen Sie völlig alle Hilfe Seiten, die für jeden Befehl sehr sorgfältig angezeigt werden.

  • echo /?
  • endlocal /?
  • for /?
  • if /?
  • rd /?
  • set /?
  • setlocal /?
  • xcopy /?

Lesen Sie auch die Microsoft Artikel über Using Command Redirection Operators für eine Erklärung der >nul und 2>nul. Und lesen Sie die Antwort auf Single line with multiple commands using Windows batch file für eine Erklärung des Betreibers & wie im letzten Batch-Code verwendet (einzelne Befehlszeile mit RD).

Verwandte Themen