フォロトップ:この会議室が所属するフォロのトップページへ移動します 会議室トップ:この会議室のトップページへ移動します トピック一覧:この会議室内のトピックを一覧表示します おすすめレビュー:この会議室に関連付けられたレビューを一覧表示します 発言者一覧:この会議室に発言したことのあるメンバーを一覧表示します 会議室に参加:この会議室への参加登録が出来ます
文字サイズ変更: [] [] []
お目当てのフォロへGO! 
オフィシャル
エンタメ
スポーツ
文化・趣味
コンピュータ
くらしと健康
芸術・学問
ビズと社会
地域・年代
ノンジャンル


2009年02月16日
18:06
【112】  【DOS】外部のリストファイルを読み込み変数(2つ)にセット⇒for文で処理を全行分実行
初めてDOSコマンドによるバッチファイルを作成しており
実現出来ない事項がございます。

下記の実現方式についてご教授頂けないでしょうか。


===========
処理
===========
ファイル名:pgm.bat
処理実行時引数:変数1、変数2

===========
変数を記載したファイル
===========
ファイル名:list.txt
値:
A 100
B 200
C 300

===========
実現したいこと
===========
■pgm.batを実行
■list.txtの1行目を読み込む。
スペース区切りの1項目目を変数1に、2項目目を変数2に代入。
■処理実行
■正常終了を確認

■list.txtの2行目を読み込む。
スペース区切りの1項目目を変数3に、2項目目を変数4に代入。
■処理実行
■正常終了を確認

■list.txtの3行目を読み込む。
スペース区切りの1項目目を変数5に、2項目目を変数6に代入。
■処理実行
■正常終了を確認

■pgm.bat終了

===========
環境
===========
Windows2000 SP4

===========
その他
===========

ひとまず変数を入れるために以下を試したところ
<結果>の内容が戻ってきました。


<テストコマンド>
@for /F "tokens=1-2,*" %%i in (list.txt) do @call :sub "%%i" "%%j"

:sub
@set ID=%~1
@set ID2=%~2


@echo %ID%
@echo %ID2%

<結果>
A
100
B
200
ECHO は <ON> です。
ECHO は <ON> です。
コメント
2009年02月17日
18:23
質問の続きは?ここまで順調ですよね?
2009年02月18日
00:02
こんばんは。コメントありがとうございます。
書き方が悪かったようです。
実現したかったのは変数ID,ID2を利用しての処理実行です。※@echoではなく、別のコマンドを実行したいです。

list1行目のコマンドが正常終了(戻り値を受けて)してはじめて2行目を実行するという風にしたいのですが・・・・
2009年02月18日
13:51
@echo off
for /F "tokens=1-2,*" %%i in (list.txt) do call :sub "%%i" "%%j" & if errorlevel 1 exit /b
goto :EOF
:sub
set ID=%~1
set ID2=%~2
コマンド %ID% %ID2%

ですかね。
コマンドが複数個あって、どれか一つでも失敗したら終了なら、
:sub
set ID=%~1
set ID2=%~2
コマンドA %ID% %ID2%
if errorlevel 1 exit /b
コマンドB %ID% %ID2%
if errorlevel 1 exit /b
コマンドC %ID% %ID2%
2009年02月18日
21:49
記載ありがとうございます。
ちなみに
>コマンドが複数個あって、どれか一つでも失敗したら終了なら、
の方です。

ただ今回の場合コマンドは複数回実行しますが、内容は同一なんです。
>コマンド %ID% %ID2%
が正常終了する限り実行し続けるといったイメージでしょうか。

自分でももっと検討してみます。
すべて表示 1番~4番を表示
 コメントするにはfolomyへの会員登録ならびにログインが必要です。 folomyに入会する
ログインする(すでに登録済みの方)
----