|
457) FORからのLHAの戻り値について ぽこぽん 2003/07/23(水) 20:23 |
|
どうもはじめまして。 環境:WinNT Server4.0 SP6 現在、FORにて対象ディレクトリィのファイルを存在するすべて(*.*)をLHA32.exeに渡して1づつ圧縮しています。(UNLHA32.DLL使用) で、ここで圧縮で何らかのエラーが出たときにエラーコードを拾って 処理をGOTOで飛ばしたいのです。 単純にFORを使わずにLHA32からの1づつ圧縮を実行すれば、エラーレベルで拾えるのですが、FORからのLOOPだとすべての処理が終了後に一応エラーレベルが拾えるのですが、これだと途中でエラーが発生した場合にそこで処理を止めてGOTOで次の処理に飛ばすことができません。 (もしかすると何らかの方法があるのかもしれませんが・・・) 最悪、ファイル1づつ、 LHA32 a hoge1.lzh c:\hoge1.dat LHA32 a hoge2.lzh c:\hoge2.dat LHA32 a hoge3.lzh c:\hoge3.dat ・ ・ ・ という風にしなければならないのでしょうか? こような書き方はなんか、納得できないのですが・・・ どなたか、お知恵をお貸しください。 よろしくお願いします。 ちなみにLHA32.exe UNLHA32.DLL以外の使用は業務上禁止されています。とほほ。 |
|
458) Re:FORからのLHAの戻り値について じゃく 2003/07/24(木) 10:14 |
|
http://homepage1.nifty.com/jak/batch/ |
|
>環境:WinNT Server4.0 SP6 > >現在、FORにて対象ディレクトリィのファイルを存在するすべて(*.*)をLHA32.exeに渡して1づつ圧縮しています。(UNLHA32.DLL使用) >で、ここで圧縮で何らかのエラーが出たときにエラーコードを拾って >処理をGOTOで飛ばしたいのです。 以下のサンプルのように、for文とcall文を組み合わせて、 LHA32 の呼び出し部分をサブルーチン化すればいいと思います。 call /? のヘルプもご参照下さい。 -------------------------------------------- @echo off for %%f in ( *.dat ) do call :sub %%f goto end :sub LHA32 a %~n1.lzh %1 if ERRORLEVEL 1 goto err goto :EOF :err REM エラー処理を記述する場所 goto :EOF :end |
|
460) Re2:FORからのLHAの戻り値について ) 2003/07/23(水) 20:23 2003/07/25(金) 02:00 |
|
じゃくさん、ありがとうございました。 CALL、 案外気づきませんでした。 たすかりました。 |