• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:batによるiniの読み込み。)

batによるiniファイルの読み込みとバックアップ方法

このQ&Aのポイント
  • batファイルを使用してiniファイルを読み込み、ログの出力やデータのバックアップを行う方法について教えてください。
  • バックアップはrobocopyを使用して実行します。
  • ご教授いただけると助かります。

質問者が選んだベストアンサー

  • ベストアンサー
  • dscripty
  • ベストアンサー率51% (166/325)
回答No.3

外部ファイルで、変数を設定したいだけなら、下のバッチファイルを作って [init.bat] | Set LOG="D:\log" | Set FORDER="M:\testfolder" | Set BK_FORDER="Z:\bkupfolder" [backup.bat] の始めの方で、 | Call init.bat すればいいだけじゃない? そういうことではなくて、for /F の機能を覚えるためなら、 「コマンド ライン リファレンス」の http://technet.microsoft.com/ja-jp/library/cc778084%28WS.10%29.aspx 「for」 のページの 「反復してファイルを解析する」を良く読み込んでみるといいかも? ちなみに↓を実行すると、 | C:\>for /F "eol=' delims== tokens=1,2" %a in (backup.ini) do @Echo.Set %a=%b こうなる。 | Set LOG=D:\log | Set FORDER="M:\testfolder" | Set BK_FORDER="Z:\bkupfolder" バッチファイルは、下の 6種類のコマンドの機能を覚えれば、一通りできるようになるから、ヘルプをよく読んで、どんな機能があるのかだけでも知っておくといいとおもう。 - Set - Echo - If...Else - For...In...Do - Call/Exit - Setlocal/Endlocal 構文をわすれてもコマンドプロンプトでヘルプを見ればいいだけだからね! | C:\>Set /?

noname#138172
質問者

お礼

dscriptyさん 何度も丁寧な回答ありがとうございます。 どうにかして、iniファイル読み込み後の各処理を実行したいと思っています。 ですが、Callによる外部ファイルを読み込む方法も初めて知り、参考になる部分もありましたので、こちらの方法も検討していきたいと思います。 また、教えていただいたURLとその他の回答も参照して、モジュールを作成できるように試してみたいと思います。(質問自体は受付中にし、当初の方法または他に方法がある回答を確認したいと思います) 色々とありがとうございました。

その他の回答 (2)

  • dscripty
  • ベストアンサー率51% (166/325)
回答No.2

[ANo.1] の補足に対する回答ね。 > 曖昧な質問内容で ↓質問の意味はもともと明確だけど、 > batによるiniの読み込み。 > 表題の通りなのですが、batファイルでiniを読み込み、 その前にバッチファイルが全然機能してないから、そっちの方が気になるけど、見なかったことにして、 今回の質問の肝となることろは↓ここと | REM robocopy実行 | FOR /F "tokens=1,2" %%A in ('type %INI%') do ( | set %FOLDER%=%%A | set %BK_FOLDER%=%%B | ) と [backup.ini] だけだよね。 これをデバッグ用に処理に Echo を書き加えると、 [backup.bat] | @Echo Off | Set INI=backup.ini | REM robocopy実行 | FOR /F "tokens=1,2" %%A in (%INI%) do ( Rem ← type 不要(※) | Echo.Set FOLDER=%%A | Echo.Set BK_FOLDER=%%B | ) (※ type 不要) ↓ for /? の引用 | FOR /F ["オプション"] %変数 IN (ファイル セット) DO コマンド | [コマンド パラメータ] で、コレを実行すると、 | Set ='#ログの出力先 | Set = | Set =LOG=D:\log | Set = | Set ='#バックアップ元フォルダ | Set = | Set =FORDER="M:\testfolder" | Set = | Set ='#バックアップ先フォルダ | Set = | Set =BK_FORDER="Z:\bkupfolder" | Set = となるけど、本当は、どうさせたい? この Set 文がどうなっていて欲しいのかが重要だよね。

noname#138172
質問者

補足

dscriptyさん 回答ありがとうございます。 補足回答のset文(iniファイル?)の記載についてですが、"ログの出力先"、"バックアップ元フォルダ"、"バックアップ先フォルダ"は、各変数の見分けをつけるためにコメントしておいただけですので、Set 文として成立してほしいのは、 ・LOG=D:\log ・FORDER="M:\testfolder" ・BK_FORDER="Z:\bkupfolder" です。 これらの変数を基に、ログの出力やrobocopyの実行を行いたいです。 このような返信で宜しかったでしょうか? もし、認識違いでしたら申し訳ございません。 お手数をかけますが、確認を宜しくお願いします。

  • dscripty
  • ベストアンサー率51% (166/325)
回答No.1

一度にやって、もどこがうまくいっていないかわからないでしょ? 部分部分が、それぞれ上手く動くかどうか確かめてから、全部をくっつけてバッチファイルを完成させるといいとおもう。 とりあえず、この部分だけ、意図したとおりに動作するか確認してみるね。 | @Echo Off | REM iniファイルの読み込み。 | REM 確認できなかったら、異常終了する。 | IF NOT EXIST backup.ini ( | (echo !date! !time! iniファイル[backup.ini]がありません) | exit /b 16 | ) ↓実行結果。 | C:\>backup.bat | !date! !time! iniファイル[backup.ini]がありません "!date!" と "!time!" がそのまま表示されてるよ? たぶん、日時を出力したいんだとおもうけど、 そのコマンドは、 | C:\>Date /T | 2011/08/05 | | C:\>Time /T | 23:59 で、コマンドの出力結果を変数に入れるには、 | C:\>For /F "tokens=* usebackq" %i In (`コマンド`) Do Set 変数名=%i バッチファイルの中だと | For /F "tokens=* usebackq" %%i In (`コマンド`) Do Set 変数名=%%i だから、 | (echo !date! !time! iniファイル[backup.ini]がありません) ではなくて、 | For /F "tokens=* usebackq" %%i In (`Date /T`) Do Set DATE=%%i | For /F "tokens=* usebackq" %%i In (`Time /T`) Do Set TIME=%%i | Echo.%DATE% %TIME% iniファイル[backup.ini]がありません 実行してみると、 | C:\>backup.bat | 2011/08/06 00:05 iniファイル[backup.ini]がありません こんな感じで、それぞれの部分を確かめてみるといいよ?

noname#138172
質問者

補足

dscriptyさん バッチファイルの組み方についての回答ありがとうございます。 今回の質問の疑問点としては、 ・このbat内で読み込む、iniファイルの中身が現状の記載方法で良いのか? ・その正しいiniファイルを読み込み後の、各処理(ログの出力やrobocopyの実行等)を反映させるためには、どのようなプログラミングを行えば良いのか? が分からないため、今回の質問をさせて頂きました。 曖昧な質問内容で申し訳ございません、大変失礼しました。 もし宜しければ、お手数をかけますが確認をお願いします。

関連するQ&A