[前の記事]« キー入力待ちで文字列を取得する方法
[次の記事]WinNT3.5以上:バッチ処理でファイル名に日付を追加したい »

関連オンラインソフト配布サイト:
Vector>ダウンロード(top) |>MS-DOSまたは汎用 | >WindowsVista/XP/2000/NT

▲カテゴリー「FOR .. IN ( ) DO..」索引へ

FOR文内での条件分岐処理


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でした。。。
 
 


カテゴリー「FOR .. IN ( ) DO..」索引へ

 

カテゴリー一覧

FPCU/FPCDIY QUICK LINK online
この上の各ジャンル名をクリックすると、下のウィンドウが切り替わります▼


=リンク集のインデックスはこちら=

資料書籍

About

2002年06月27日 10:50に投稿されたエントリーのページです。

ひとつ前の投稿は「キー入力待ちで文字列を取得する方法」です。

次の投稿は「WinNT3.5以上:バッチ処理でファイル名に日付を追加したい」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

This site is powered by Six Apart
Movable Type 3.33-ja
このブログについて | 運営:有限会社メディアポート