◇-?バッチファイルからINIファイルを読み込み処理-KMADMIN(初)-08/19-11:17(1426)-No.509951 ┣?!Re:バッチファイルからINIファイ...-pandora-08/19-12:39(1425)-No.509952 ┗?!Re:バッチファイルからINIファイ...-ZONE-08/19-20:38(1417)-No.509955 ┗?!!Re:バッチファイルからINIファ...-KMADMIN-08/19-22:09(1415)-No.509956 ┗?!!!Re:バッチファイルからINIファ...-ZONE-08/20-07:46(1406)-No.509957 ┗?!!!!Re:バッチファイルからINIフ...-KMADMIN-08/21-08:41(1381)-No.509963 ┗?!!!!!Re:バッチファイルからINIフ...-ZONE-08/21-18:29(1371)-No.509965
509951 | バッチファイルからINIファイルを読み込み処理 | KMADMIN(初) | 2012/08/19-11:17 |
メーカー名:富士通 OS名:Windows7 パソコン名:XX トラブル現象:インターネット全般その他 -- バッチファイルに関する質問です。 バッチファイルからINIファイルを読み込んで下記処理を行いたいのですが、 方法をご教授頂けませんでしょうか? 処理を行いたい内容 SETUP.BAT 設定値をSETUP.INIから参照し、条件を判断した上で ファイルのコピーを行う。 SETUP.INI ;設定値 PARA=0 #・・・0〜9の数字 ;処理(PARA=xの処理) 0=XXX1.DAT 1=XXX2.DAT 2=XXX3.DAT 9=XXX9.DAT ※PARA=0の時はXXX1.DATをコピー、PARA=1の時はXXX2.DATをコピー・・・ 簡単な説明で申し訳ありませんが、よろしくお願い致します。 |
509952 | Re:バッチファイルからINIファイルを読み込み処理 | pandora | 2012/08/19-12:39 |
記事番号509951へのコメント KMADMIN(初)さんは No.509951「バッチファイルからINIファイルを読み込み処理」で書きました。 【INIファイルの定義読み出し方法】 例えば、INIファイルの内容がこんなだとして ; ---(実行管理用)----------------------------------------------- ;「ADMINCHK=YES」で、管理者権限診断をする ADMINCHK=YES ;「AUTOLOGON=YES」で、Windows自動ログオンを有効にする AUTOLOGON=NO ;「SHUTDOWN=YES」で、処理完了後にShutdown SHUTDOWN=NO ; ; ---(デバッグ用)----------------------------------------------- ;「DBGMODE=YES」で、デバッグ実行モード DBGMODE=NO ; -------------------------------------------------------------- 具体的な取り出し方法は、こんな感じで :: INIファイルの内容取り出し IF EXIST %~n0.INI ( FOR /F "USEBACKQ EOL=; TOKENS=1,2 DELIMS==" %%A IN (%~n0.INI) DO ( FOR %%I IN (ADMINCHK AUTOLOGON SHUTDOWN DBGMODE) DO IF /I "%%A"=="%%I" SET %%I=%%B ) ) ECHO ADMINCHK=%ADMINCHK% ECHO AUTOLOGON=%AUTOLOGON% ECHO SHUTDOWN=%SHUTDOWN% ECHO DBGMODE=%DBGMODE% INIファイルの構造がもっと複雑で、こんな形式のものでも凝れば出来ます。 [INFO] VERSION=*** SOFTWARE=*** COMMENT=*** [LIST] COUNT=3 1=AAA 2=BBB 3=CCC [AAA] DATA1=*** DATA2=*** DATA3=*** [BBB] DATA1=*** DATA2=*** DATA3=*** [CCC] DATA1=*** DATA2=*** DATA3=*** 以上のように、変数に読み出せればコピー対象を変数で指示すればいいので、後は簡単でしょう。 参考文献 ・コマンド・プロンプト・リファレンス http://www.fpcu.jp/dosvcmd/index.htm |
509955 | Re:バッチファイルからINIファイルを読み込み処理 | ZONE | 2012/08/19-20:38 |
記事番号509951へのコメント KMADMIN(初)さんは No.509951「バッチファイルからINIファイルを読み込み処理」で書きました。 あなたが考えたBATファイルの内容を書き出しましょう。 そして、それが期待通りに動作しないのか、問題があってそれを解決する方法が 知りたいのか具体的に質問してください。 そうすれば、あなたのスキル(レベル)に合わせて回答がもらえると思いますよ。 |
509956 | Re:バッチファイルからINIファイルを読み込み処理 | KMADMIN | 2012/08/19-22:09 |
記事番号509955へのコメント ZONEさんは No.509955「Re:バッチファイルからINIファイルを読み込み処理」で書きました。 ZONEさん 回答ありがとうございます。 具体的なコードはできておりません。というのも、質問の様な事ができるか、 まずそこをお尋ねしている次第です。 当方の考えていることは下記の通りです。 バッチファイルとINIファイルを用いて、環境設定を行いたい。 INIファイルに環境設定値及び環境設定値に対する条件を設定し バッチファイルからINIファイルの設定情報を取得しバッチファイルを 実行させたいと考えております。 INIファイル ;設定値 (環境に合わせて0〜9を設定) SETPARA=0 ;条件設定 ;SETPARAの設定値に応じて環境ファイルを指定 SETPARA0=XXXX_0.dat SETPARA1=XXXX_1.dat SETPARA2=XXXX_2.dat SETPARA3=XXXX_3.dat SETPARA4=XXXX_4.dat SETPARA5=XXXX_5.dat SETPARA6=XXXX_6.dat SETPARA7=XXXX_7.dat SETPARA8=XXXX_8.dat SETPARA9=XXXX_9.dat BATファイル 1.設定値を読み込む。 2.設定値に相応するファイルを指定フォルダにコピーする。 ex)SETPARA=0の場合、XXXX_0.datをコピーする。 3.対象プログラムを起動する。 XXXX_0.dat等の配置場所 ⇒D:\APSETUP\INI\ XXXX_0.dat等のコピー場所 ⇒C:\XXXX\INI pandora様のコードを応用すればと思っているのですが、頭がかたいのか、 なかなか思いつきませんので、もう少し噛み砕いて説明いただけると 助かります。 以上、よろしくお願い致します!! |
509957 | Re:バッチファイルからINIファイルを読み込み処理 | ZONE | 2012/08/20-07:46 |
記事番号509956へのコメント KMADMINさんは No.509956「Re:バッチファイルからINIファイルを読み込み処理」で書きました。 >pandora様のコードを応用すればと思っているのですが、 その通りです。 FOR文はいろいろなことができるために理解するのはちょっと難しいです。 でも、理解しないと先に進めません。 一切のエラー処理を省いたBATファイルを作成しましたので、動作確認のうえ エラー処理を肉付けしてください。 --- ここから --- @ECHO OFF REM * iniファイルの「SETPARA=」行の値を変数(ini_SETPARA)に取り込む FOR /F "tokens=1,2 usebackq delims==" %%a IN (`type "Setup.ini"`) DO ( IF %%a == SETPARA SET ini_SETPARA=%%b ) REM * 変数(ini_SETPARA)の値(0〜9)に対応する REM * iniファイルの「SETPARA0〜9=」行の値を変数(ini_SETPARAN)に取り込む FOR /F "tokens=1,2 usebackq delims==" %%a IN (`type "Setup.ini"`) DO ( IF %%a == SETPARA%ini_SETPARA% SET ini_SETPARAN=%%b ) REM * ファイルをコピー COPY D:\APSETUP\INI\%ini_SETPARAN% C:\XXXX\INI --- ここまで --- 肉付けが必要なエラー処理&対策 ・iniファイルの存在有無チェック ・iniファイル内に「SETPARA=」行が存在しない場合や値が範囲外時の処理 ・iniファイル内に「SETPARA0〜9=」行が存在しない場合や値が範囲外時の処理 ・フォルダPATHに半角スペースが含まれる場合の対策 ・ファイル名に半角スペースが含まれる場合の対策 ・コピー元ファイルの存在有無チェック ・コピー先フォルダが存在しない場合の処理 ・コピー先に同名ファイルが存在した場合の処理 ・その他 |
509963 | Re:バッチファイルからINIファイルを読み込み処理 | KMADMIN | 2012/08/21-08:41 |
記事番号509957へのコメント ZONEさんは No.509957「Re:バッチファイルからINIファイルを読み込み処理」で書きました。 ZONE様 返事が遅くなりまして申し訳ありません。 頂きました内容を工夫することで対応することができました。 それと同時に、大変勉強になりました。ありがとうございます。 とりあえずですが、iniファイルの存在有無、iniファイル内の各パラメタの設定に 問題がある場合などのエラー処理を加えた次第です。 あと一点だけお聞きしたいのですが、フォルダPATHに半角スペースが含まれる場合の対策 ですが、iniファイルにこの内容を定義した場合、どのようにすればよろしいでしょうか? 半角スペースも区切りになっている様で、そこでデータが切れてしまいます。 よろしくお願いいたします。 |
509965 | Re:バッチファイルからINIファイルを読み込み処理 | ZONE | 2012/08/21-18:29 |
記事番号509963へのコメント KMADMINさんは No.509963「Re:バッチファイルからINIファイルを読み込み処理」で書きました。 >あと一点だけお聞きしたいのですが、フォルダPATHに半角スペースが含まれる場合の対策 >ですが、iniファイルにこの内容を定義した場合、どのようにすればよろしいでしょうか? 引数に半角スペースが含まれる場合は「"」で囲むだけです。 半角スペースが含まれなくても「"」で囲って問題ありません。 ただし、二重に囲むとエラーになります。 ex)iniファイルのファイル名を「"」で囲まない場合 SETPARA3=XX XX_3.dat COPY "D:\AP SETUP\INI\%ini_SETPARAN%" "C:\XXXX\INI" ex)iniファイルのファイル名を「"」で囲った場合 SETPARA3="XX XX_3.dat" COPY "D:\AP SETUP\INI\"%ini_SETPARAN% "C:\XXXX\INI" ex)エラーになるパターン SETPARA3="XX XX_3.dat" COPY "D:\AP SETUP\INI\%ini_SETPARAN%" "C:\XXXX\INI" >3.対象プログラムを起動する。 あと、↑について回答してなかったので簡単に。 BATファイル内からプログラムを起動する方法は二通りあります。 #OSによって動作が異なることがありますので、必ず実行OSで動作確認すること。 1.起動したプログラムが終了するまで処理を待機させる起動方法 ex)notepad.exe 2.起動したプログラムの終了を待たずに処理を続行する起動方法 ex)start notepad.exe |