Ich habe eine Anforderung zum Erstellen einer Batch-Datei in Windows 2003 Server. Wir haben Cygwin installiert und können Unix-Befehle ausführen.Datei gegen zuletzt geänderte Datei vergleichen, Ausgabe Mods zu .TXT-Datei
Jede Nacht wird ein Verfahren zur Herstellung einer timestamped Datei herunterladen,% yyyy FILE * %% mm %% dd% .txt zu c: \ temp \ download.
Ein FTP-Prozess wird dann FTP an einen anderen Speicherort und verschieben Sie die Datei auf c: \ temp \ download \ archiviert.
Wir versuchen, vor dem ftping einen Dateivergleich mit der neuen Datei in c: \ temp \ download gegen die zuletzt geänderte Datei in c: \ temp \ download \ archived durchzuführen, um nur ftp zu erstellen Zeilen, die seit dem letzten Hochladen der Datei geändert wurden. Die aktuelle txt-Datei sollte nur Zeilen enthalten, die sich von den vorherigen Tagen unterscheiden.
Ich habe das folgende Skript mit Erfolg laufe zwei Dateien zu sortieren und vergleichen:
@echo on
set archive=C:\temp\download\archived
set download=C:\temp\download\
pushd "%archive%"
for /f "tokens=*" %%G in ('dir *.txt /b /a-d /od') do SET oldfile=%%G
pushd "%download%"
for /f "tokens=*" %%H in ('dir *.txt /b /a-d /od') do SET newfile=%%H
echo The last file processed was %oldfile%
echo The new file is %newfile%
comm -2 -3 <(sort %archive%\%oldfile%) < (sort %download%\%newfile%) > %download%\%newfile%
pushd "%download%"
popd
Das Skript ohne die Art funktioniert, aber sobald die hinzugefügt wird, das Skript fehlschlägt.
Lauf comm -2 -3% Archiv% \% oldfile%% Download% \% newfile% funktioniert, aber bei der Zugabe, die Art nicht, mit dem Fehler:
comm -2 -3 C : \ temp \ download \ archived \ CPSNS_20140527075503.txt) C: \ temp \ download \ CPSNS_20140602075502.txt) 0 < (Sortieren 1> c: \ temp \ download \ workpl ease.txt Das System kann die angegebene Datei nicht finden
Jede Hilfe wäre sehr willkommen!
Das 'yyyy' ist 2014? Ist das die Vergangenheit? btw, 'findstr/v/G:" prevDay "/ F:" curDay ">" diff.log "' sollte die Differenzen von 'prevDay' und' curDay' in 'diff.log' ausgeben. Umbenennen nach Belieben Datei mit der höchsten Nummer in ihrem Namen als "curDay" und die zweithöchste als "prevDay". – Bloodied