|
418) FORとIFの併用? RICIA 2002/06/27(木) 14:16 |
|
お世話になります。 LHA32でフォルダ内の全てのファイルを圧縮する時に エラーが起きた時のみ外部LOGファイルへ出力したいのですが、 FOR %%i IN (*.*) DO LHA32 a -n %%~ni %%i と IF NOT %ERRORLEVEL%==0 を組合せてできるのでしょうか? ご教授宜しくお願い致します。 |
|
420) Re:FORとIFの併用? SYSOP 2002/06/28(金) 02:07 |
|
RICIAさん こんにちは。 Windows2000かXPが前提のご質問のようですね。お使いのWindowsのバージョン(種別/製品名)は必ず書いてくださいね。 >FOR %%i IN (*.*) DO LHA32 a -n %%~ni %%i >と >IF NOT %ERRORLEVEL%==0 >を組合せてできるのでしょうか? どのWindowsのバージョンでも使える方法としては「callで別のバッチファイルを呼び出し、そちらで処理する」という方法がありますが、Windows2000以降だと、 ・( )記号で囲めばコマンドをグループ化できる。 ・&で複数のコマンドを連続化できる。 ……といった追加機能を組み合わせて、FORのあとに必要なコマンドをそのまま連続的に記述することも可能です。 FOR %%I IN (*.*) DO ( 処理1 & 処理2 ...) 蛇足ですが、IF NOT %ERRORLEVEL%==0 の部分は「ERORRLEVELが0以外なら処理する」という意図でこうされているのだと思いますが、たとえば、 IF ERRORLEVEL 1 ECHO %%iでエラー発生。エラーコード=%ERRORLEVEL%>>ERROR.LOG ……とか書くだけでもOKです。文字ではなく数値として検査した場合、ERORRLEVEL 1と書くだけで「1以上なら」という意味になるので……。 YanaKen |
|
422) Re2:FORとIFの併用? RICIA 2002/06/28(金) 11:57 |
|
ご返答ありがとうございます。 SYSOPさんのおかげで問題が解決しました。 CALLは使えない環境でしたので(~ & ~)を使用させていただきました。 「蛇足」の方、ありがとうございます。 バッチファイル初心者の為、とても参考になりました。 使わせてもらいます。 > お使いのWindowsのバージョン(種別/製品名)は必ず書いてくださいね。 すみません。配慮が足りませんでした。 WinNT4.0でした。。。 |