DOSコマンド IFについて



 ◇-?DOSコマンド IFについて-肝さん-09/01-12:42(321)-No.482932
   ┣?!Re:DOSコマンド IFについて...-ヒロ-09/01-13:20(321)-No.482933
   ┗?!Re:DOSコマンド IFについて...-pandora-09/01-13:40(320)-No.482934

▲このページのトップに戻る
482932DOSコマンド IFについて肝さん 2009/09/01-12:42

メーカー名:富士通
OS名:WindowsXp Professional
パソコン名:FMV-C8250
--
お世話になります。質問させて下さい。
DOSコマンドのIFを使用して、下記のような動作をさせているのですが、
SETに意図しない数値を設定した場合のエラー処理方法について、ヒントをいた
だけませんでしょうか?

現在の内容

SET INSTDIR=1 ・・・設置場所によって、この数値を変更します。

if %INSTDIR%==0 GOTO :INST_EXE1
if %INSTDIR%==1 GOTO :INST_EXE2
if %INSTDIR%==2 GOTO :INST_EXE3
if %INSTDIR%==3 GOTO :INST_EXE4
if %INSTDIR%==4 GOTO :INST_EXE5



:INST_EXE1
〜処理内容〜

:INST_EXE2
〜処理内容〜

:INST_EXE3
〜処理内容〜

以下省略


よろしくお願い致します。

▲このページのトップに戻る
482933Re:DOSコマンド IFについてヒロ 2009/09/01-13:20

記事番号482932へのコメント
肝さんさんは No.482932「DOSコマンド IFについて」で書きました。

1)エラー処理をgotoで飛ばす場合のパターン
SET INSTDIR=1 ・・・設置場所によって、この数値を変更します。

if %INSTDIR%==0 GOTO INST_EXE1
if %INSTDIR%==1 GOTO INST_EXE2
if %INSTDIR%==2 GOTO INST_EXE3
if %INSTDIR%==3 GOTO INST_EXE4
if %INSTDIR%==4 GOTO INST_EXE5
goto ERR


:INST_EXE1
〜処理内容〜
goto END

:INST_EXE2
〜処理内容〜
goto END

:INST_EXE3
〜処理内容〜
goto END

:ERR
エラー処理

:END
終了処理

2)IF文に該当しない場合は直接エラー処理を記述して後はENDへ飛ばす
SET INSTDIR=1 ・・・設置場所によって、この数値を変更します。

if %INSTDIR%==0 GOTO INST_EXE1
if %INSTDIR%==1 GOTO INST_EXE2
if %INSTDIR%==2 GOTO INST_EXE3
if %INSTDIR%==3 GOTO INST_EXE4
if %INSTDIR%==4 GOTO INST_EXE5

エラー処理(INSTDIRが0〜4以外の場合)
goto END

:INST_EXE1
〜処理内容〜
goto END

:INST_EXE2
〜処理内容〜
goto END

:INST_EXE3
〜処理内容〜
goto END

:END
終了処理

にするとか

▲このページのトップに戻る
482934Re:DOSコマンド IFについてpandora 2009/09/01-13:40

記事番号482932へのコメント
肝さんさんは No.482932「DOSコマンド IFについて」で書きました。

すでに、回答がされてますが

たとえば、C言語等の高級言語でよく利用する、
 ・関数アドレス登録テーブルのインデックス参照で分岐先を選択する
とかいった方法はできません

DOSバッチはそこまで頭が良くないので
回答にあるように、IF文を羅列して当該処理に分岐させるしかないです
(いずれのIF文にも該当しない場合、エラー)



ちなみに、
数値変数に数値以外のものが含まれないか、こんな方法で確認します

SET TEMPSTR=
IF DEFINED INSTDIR SET TEMPSTR=%INSTDIR:0=%
IF DEFINED TEMPSTR SET TEMPSTR=%TEMPSTR:1=%
IF DEFINED TEMPSTR SET TEMPSTR=%TEMPSTR:2=%
IF DEFINED TEMPSTR SET TEMPSTR=%TEMPSTR:3=%
IF DEFINED TEMPSTR SET TEMPSTR=%TEMPSTR:4=%
IF DEFINED TEMPSTR SET TEMPSTR=%TEMPSTR:5=%
IF DEFINED TEMPSTR SET TEMPSTR=%TEMPSTR:6=%
IF DEFINED TEMPSTR SET TEMPSTR=%TEMPSTR:7=%
IF DEFINED TEMPSTR SET TEMPSTR=%TEMPSTR:8=%
IF DEFINED TEMPSTR SET TEMPSTR=%TEMPSTR:9=%
IF DEFINED TEMPSTR GOTO エラー処理

ただし
場合によっては、「遅延環境変数の展開」による変数参照をしないとうまく動作しないときがあります

A1.本ページは参考になりましたか? 又はアドバイスがありますか?
解決 参考になった 参考にならなかった アドバイスする

A2.何度目の訪問ですか?
初めて来た   数度目(2〜4) 5回以上来ている   管理人:

A3.何か一言どうぞ(アドレスは書くことができません)

A4.アドレスがあればどうぞ(1つまで)


↑↑↑↑よろしければ押してください↑↑↑↑

何か一言(本ページで参考になったならないを含めて残してあります)
◎:解決 ○:参考になった ×:参考にならなかった !:アドバイスあり

参考回数投稿日時何か一言