アプリ版:「スタンプのみでお礼する」機能のリリースについて

バッチで一個のforでiniファイルのパラメーターを三つ取得したいですが。。。
a.iniファイルが存在しています。内容は:

パラメーター設定ファイル
会員コード:M1MM
ID:FUKI
パスワード:FUKI

バッチで、会員コード、ID、パスワード三つのパラメーターを取得したいですので、forを使用したいと思います:

set a=1
for /f "skip=1 delims=: tokens=1-2" %%I in (a.ini) do (
set kind[%a%]=%%J
set /A a=%a%+1
)
echo %a[1]%,%a[2]%,%a[3]% >> 123.csv

ですが、aのカウントアップはうまくいかず、うまく三つのパラメーターを取得できません。for三回を使用すれば行けるはずですが、for一回でうまく取得できる方法が有りませんでしょうか?おしえてください。

A 回答 (1件)

for処理中の環境変数の参照は、実行時に一回だけ展開されます。

そのため、質問者さんの記述では、for実行時の変数状態を元に
> set kind[1]=%%J
> set /A a=1+1
を3回実行することになります。

こういう場合は、遅延環境変数の展開を使います。

---ここから---
setlocal enabledelayedexpansion
set a=1
for /f "skip=1 delims=: tokens=1-2" %%I in (a.ini) do (
set kind[!a!]=%%J
set /A a=!a!+1
)
---ここまで---
としてみてください。
%a%は、環境変数aのfor実行開始時の値で一回だけ置き換えられますが、
!a!は、環境変数aの値がfor内で毎回展開されます

詳しくは、遅延環境変数の展開について調べてみてください。
http://www.google.co.jp/search?q=%92x%89%84%8A%C …
    • good
    • 0
この回答へのお礼

うまく行けました。本当にありがとうございます。

お礼日時:2010/12/04 14:28

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!