2016-03-31 24 views
0

Windows 2003サーバーにバッチファイルを作成する必要があります。 Cygwinがインストールされているので、unixコマンドを実行できます。ファイルを最終変更ファイルと比較して出力ファイルを.TXTファイルに変換

毎晩、プロセスは、タイムスタンプのファイルをダウンロードします、FILEの*の%のYYYY %% MM %% DD%.txtのにC:\一時\のダウンロード

FTPプロセスは別の場所にFTPを転送し、ファイルをc:\ temp \ download \ archivedに移動します。

私たちが達成しようとしているのは、ftpする前に、c:\ temp \ download内の新しいファイルとc:\ temp \ download \ archived内の最後に変更されたファイル最後のファイルがアップロードされてから変更された行。現在の日のtxtファイルには、前日と異なる行のみが含まれている必要があります。

私は2つのファイルを並べ替えて比較することが成功して、次のスクリプトを実行している

@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 

スクリプトがソートせずに動作しますが、それが追加されると、スクリプトが失敗しました。

COMM -2 -3 C:COMM -2 -3%アーカイブ%\%OLDFILE%%%\%NEWFILE%作品をダウンロードするが、並べ替えを追加するとエラーと、しない場合に実行

:\ temp \ download \ archived \ CPSNS_20140527075503.txt) C:\ temp \ download \ CPSNS_20140602075502.txt)0 <(ソート1> c:\ temp \ download \ workpl ease.txt システムは指定されたファイルを見つけることができません。

+0

「yyyy」は2014ですか?これは過去ですか? findstr/v/G: "prevDay"/F: "curDay"> "diff.log" '' prevDay'と 'curDay'の違いを' diff.log'に出力する必要があります。 'curDay'という名前のファイルの中で最も高い番号のファイルと、' prevDay'の次のファイルのファイルです。 – Bloodied

答えて

0

今のところ動作しているようです。以下は、私が使ったスクリプトです。お気軽に改善を提案してください。両方のファイルをソートしてCOMMを実行し、%newfile%と%oldfile%で変更された行だけを出力します。

@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% 
sort %archive%\%oldfile% > tmp && mv tmp %download%\%oldfile% 
sort %download%\%newfile% > tmp && mv tmp %download%\%newfile% 
comm -2 -3 %download%\%newfile% %download%\%oldfile% > tmp && mv tmp  %download%\%newfile% 
pushd "%download%" 
del %oldfile% 
popd 
関連する問題