2016-03-29 16 views
3

Ich bin ein Neuling, versuche jedoch, eine Stapeldatei zu erstellen, die den Ordnerinhalt der Quelle liest, die Dateien mit dem Ziel vergleicht, die Übereinstimmungen sichert und verschiebt dann die Quelldateien zum Ziel. Ich schätze, der Dateiinhalt im Quellverzeichnis funktioniert wie eine Maske.Sichern bestimmter Dateien vor dem Ersetzen basierend auf dem Inhalt des Quellordners im Stapel

Gibt es eine Technik, die ich verwenden könnte, um dieses Ergebnis zu erhalten? Ich habe versucht Robocopy und XCopy mit nahe, aber nicht das, was ich suche. XCopy hat eine Ausschlussoption, aber das ist das Gegenteil von dem, was ich brauche. Irgendwelche Vorschläge würden sehr geschätzt.

Die Einrichtung ist wie folgt:

Diese Ordner enthalten diese

Parent_folder_new 
Folder1  Folder2  Folder3 
    File1   File1  File1 
    File2   File2  File2 
    File3   File3  File3 

Ich habe neue Dateien, die alte zu ersetzen:

Parent_folder_old 
Folder1  Folder2  Folder3 
    File2  File1  File1 
    File3      File3 

Bevor die Quelldateien überschreiben die Ziel diejenigen Ich muss nur die bald überschriebenen Dateien sichern.

Ich habe eine if-Anweisung versucht, aber ich weiß nicht, wo nach den

gehen zu
Set folder[1]=folder1 
Set folder[2]=folder2 
Set folder[3]=folder3 

for F "tokens=2 delims==" %%f in ('set folder[') do (
    if Parent_folder_new\%%f==Parent_folder_old\%%f 
::copy results of if statement to Parent_folder_backup\%%f 
) 

Ich hoffe, das klärt etwas von dem, was ich zu tun versuchen.

+0

Bitte teilen Sie, was Sie versucht haben und beschreiben Sie genau, was Sie Probleme haben, dann können wir Ihnen vielleicht helfen. – aschipfl

+0

Ich habe die Details aktualisiert, ich hoffe, dies hilft – Sid

+2

Ihr Ansatz scheint ein bisschen unflexibel zu sein, da es mehr als 3 Ordner im übergeordneten Speicherort geben könnte; Gibt es nur eine Verzeichnisebene oder ist es ein tiefer Baum? Wenn Letzteres wahr ist, möchten Sie nur die erste Verzeichnisebene behandeln und die tiefer liegenden Elemente ignorieren? Wie auch immer, wenn ich es richtig verstanden habe, könnten Sie 'xcopy/L/U' verwenden, um eine Liste von Dateien zu erhalten, die kopiert werden sollen ('/L' sagt 'xcopy', um nur Elemente aufzulisten, aber nicht zu kopieren) die Eingabe für einen Backup-Job, und dann 'xcopy/U' (ohne die'/L' Schalter, um diese Zeit wirklich zu kopieren) ... – aschipfl

Antwort

0

Ich würde diese verwenden zum Kopieren der Dateien

copy /y C:\path\folder1 C:\destination 

und diese zum Bewegen es

move /y C:\path\folder1 C:\destination

Sie das folder1 in einen beliebigen Ordner Sie ändern müssen. Ich benutzte dies, um meine Thumbdrives zu sichern.

echo off 
:start 
echo What folder/files do you want to copy? 
set /p copy=: 
echo Is %copy% correct? (Y/N) 
echo Note: This must be a directory path. 
set /p final=: 
if %final% == Y goto desRequest 
if %final% == N goto start 
:desRequest 
echo Destination? 
set /p destination=: 
echo Is %destination% correct? (Y/N) 
set /p finalDes=: 
if %finalDes% == Y pause 
if %finalDes% == N goto desRequest 
echo Copying... 
copy /y %copy% %destination% 
echo Copied! 
pause 
cls 
goto start 

Kopieren Sie dies einfach in eine Datei namens name.bat und Sie sind eingestellt!