MS-DOS バッチファイル作成に奮闘2


MS-DOSのバッチファイル作成で、Linuxアーカイブ化したファイルをPCで受信してファイル展開をするという手順の処理を作成しているが、ひとつ問題があった。

Linuxで、tar zcvf xxxx.tgz xxxxで作成したアーカイブをPCで受けたとき、xxxxが存在しない場合でも、除外リストを作成して正常終了して、PCにFTPで転送されてくるのだ。

PCのバッチ処理では、FTPされたアーカイブが存在しなかったらエラーとして以降の処理を中止させたいのだがその考え方はできないので試行錯誤の末、バッチファイルでは、アーカイブ化したファイルが存在した場合、内容を参照して、extractedのキーワードが存在していれば、正常、存在していなければエラーという条件でやってみた。
記述内容は以下の通りだ。


file2.tgz :Linuxで作成したアーカイブFTPでPC受信後の結果)

:error_check

  tar zlvf file2.tgz | find "extracted" > work.txt

  call :fsize work.txt
  if %fsz%==0 (
   echo 正常
  ) else (
   echo エラー
  )
exit

:fsize
  set fsz=%~z1
  echo %fsz%
exit /b

実際に上記の記述でうまくいった。
展開のサイズ次第で多少の時間がかかってもOKなので問題なし。
Windows7 WindowsXPでは、うまくいくと思う。

忘れないように、ちょっとここに書いておいてみた。