BATファイルの動作確認と設定の切り替えについて

このQ&Aのポイント
  • BATファイルは正しく動作し、環境の設定を切り替えることができます。
  • 環境変数Indexが設定されているかどうかで判断しており、最初のsetで必ず設定されるので、LOWRESにしか行かないように思われます。
  • 正常動作するためには、環境変数Indexが正しく設定されていることが必要です。
回答を見る
  • ベストアンサー

このBATファイルは正しく動作するのでしょうか?

あるサイトで下記のバッチファイルを見つけました。あるアプリを実行して、 環境1の時は環境2に、環境2の時には環境1にトグルさせるものです。 環境変数Indexが設定されているかどうかで判断させているようなのですが、 そもそも最初のsetで必ず設定されるので、LOWRESにしか行かないように思う のですが、私の理解で正しいでしょうか? これでうまく動作するか、皆様の見解をお願いします。 ちなみにどうすれば正常動作するかも教えていただければ... よろしくお願いします。 ++++++++++++++++++++ set index="c:\Program Files\アプリ\index.dat" if exist %index% goto LOWRES else goto HIRES :HIRES "c:\Program Files\アプリ\アプリ.exe" 設定1 echo LOWRES > %index% goto END :LOWRES "c:\Program Files\アプリ\アプリ.exe" 設定2 del %index% goto END :END

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

  • ベストアンサー
noname#101303
noname#101303
回答No.1

> set index="c:\Program Files\アプリ\index.dat" 最初の「set index="~"」はindexという環境変数を作っているだけです。 > if exist %index% goto LOWRES else goto HIRES その後に、実際にファイルがあるかないかを判定しています。 ファイルが無かった場合、 > :HIRES 以下に分岐して、実際に「LOWRES」と書かれたindex.datを作成し、アプリ.exe に「設定1」というオプションを与えて実行させ、バッチファイルは終了します。 (次に実行されるときは「index.dat」が有るので「:LOWRES」へ飛ぶ) ファイルが有った場合、 > :LOWRES 以下に分岐して、「index.dat」自体を削除し、アプリ.exe に「設定2」というオプションを与えて実行させ、バッチファイルは終了します。 (次に実行されるときは「index.dat」が無いので、「:HIRES」へ飛ぶ) 結果として、「設定1」と「設定2」をトグルする動作をします。

sarutora
質問者

お礼

納得です! 早速の御回答、ありがとうございました。

関連するQ&A

  • コマンドプロンプトの条件分岐について

    コマンドプロンプトで以下の処理を作成したのですが、 二つ目の「if exist」が動作しません。 何か間違っているのでしょうか? ------------------------------------------------------------- if exist "C:XXX" ( goto TEST ) else goto END :TEST if exist "C:XXX" ( goto TEST2 ) else goto END :PTT goto END :END ------------------------------------------------------------- よろしくお願いします。

  • Delapp.bat

    先程、cドライブの中を見ていたら、delapp.batというファイルがあったのですが、なんのファイルですか? さっき起動させてみたら、cmdが管理者で起動しましたが、怖くて途中で閉じました。 以下プログラム :Repeat del C:¥windows¥house¥uninstal.exe if exist C:¥Windows¥house¥uninstal.exe goto Repeat rmdir C:¥Windows¥house del C:Delapp.bat

  • 連続演奏のためのbatファイルの書き方は?

    Windows2000の環境です。 連続演奏させたいのですが下記のbatファイルだと1曲だけ終了して先に進みません。どう書き直せばいいのでしょうか? "C:\Program Files\Windows Media Player\mplayer2.exe" "\\192.168.0.7\e\KojiBackUp\winamp\色々な曲\music(Mp3)\mozart1\01-AudioTrack 01.mp3" "C:\Program Files\Windows Media Player\mplayer2.exe" "\\192.168.0.7\e\KojiBackUp\winamp\色々な曲\music(Mp3)\mozart1\01-AudioTrack 02.mp3" "C:\Program Files\Windows Media Player\mplayer2.exe" "\\192.168.0.7\e\KojiBackUp\winamp\色々な曲\music(Mp3)\mozart1\01-AudioTrack 03.mp3" "C:\Program Files\Windows Media Player\mplayer2.exe" "\\192.168.0.7\e\KojiBackUp\winamp\色々な曲\music(Mp3)\mozart1\01-AudioTrack 04.mp3" "C:\Program Files\Windows Media Player\mplayer2.exe" "\\192.168.0.7\e\KojiBackUp\winamp\色々な曲\music(Mp3)\mozart1\01-AudioTrack 05.mp3" "C:\Program Files\Windows Media Player\mplayer2.exe" "\\192.168.0.7\e\KojiBackUp\winamp\色々な曲\music(Mp3)\mozart1\01-AudioTrack 06.mp3" "C:\Program Files\Windows Media Player\mplayer2.exe" "\\192.168.0.7\e\KojiBackUp\winamp\色々な曲\music(Mp3)\mozart1\01-AudioTrack 07.mp3" "C:\Program Files\Windows Media Player\mplayer2.exe" "\\192.168.0.7\e\KojiBackUp\winamp\色々な曲\music(Mp3)\mozart1\01-AudioTrack 08.mp3" "C:\Program Files\Windows Media Player\mplayer2.exe" "\\192.168.0.7\e\KojiBackUp\winamp\色々な曲\music(Mp3)\mozart1\01-AudioTrack 09.mp3" "C:\Program Files\Windows Media Player\mplayer2.exe" "\\192.168.0.7\e\KojiBackUp\winamp\色々な曲\music(Mp3)\mozart1\01-AudioTrack 10.mp3" "C:\Program Files\Windows Media Player\mplayer2.exe" "\\192.168.0.7\e\KojiBackUp\winamp\色々な曲\music(Mp3)\mozart1\01-AudioTrack 11.mp3" "C:\Program Files\Windows Media Player\mplayer2.exe" "\\192.168.0.7\e\KojiBackUp\winamp\色々な曲\music(Mp3)\mozart1\01-AudioTrack 12.mp3"

  • batファイルでフォルダの有無を確認

    ある業務ソフト終了時にバックアップが行われC:\temp内にフォルダが作成されます。 (例) bacuk01フォルダ ※名前はランダムで作成される そのフォルダがあるかどうかを確認してあれば処理を実行するというbatが作成したいと思っているのですが、以下の内容で処理を行うとフォルダがなくてもあるように認識され処理が実行されてしまいます。どうすればよいでしょうか? if exist C:\temp\ goto ~ goto end :~ 処理内容

  • *.bat ファイルの作り方

    初歩的な質問ですが、よろしくお願いします。 例えば、EXCELを起動するときに、 スタート→すべてのプログラム→EXCEL とたどっています。 これを変更して、batファイルを作成して起動したいと思っています。 batファイルを作成して、以下のように編集しても起動しません。 C:\Program Files\Microsoft Office\Office10\EXCEL.EXE どのように書けば良いのか、分かる方よろしくお願いします。

  • BATファイルでプログラムファイルの書き換え

    ----------------------------------------------------------------- @echo off set TEST="C:\Program Files\TEST\" echo 書き換え処理を開始します。 for /f %%A in ('dir /b /s %TEST%test.txt') do copy NEW\test.txt "%%A" echo 全ての処理は完了しました。 echo 終了するには何かキーを押してください。 pause > nul ----------------------------------------------------------------- Program Files\TEST\内のtest.txtを検索して、それらすべてをNEW\test.txtで上書きするというBATファイルを作りたいのですが、上記のコードではちゃんと動作しません。 Program Files以外のフォルダを指定すると正しく動作してくれるので、おそらくProgram Filesの半角スペースがエラーの原因だと考えました。 このコードもいろいろなサイトとかを見て、自分なりに考えて作ってみました。 が、どうやったらいいのか考えても全然わからなかったので、どなたか教えていただけたら嬉しいです^^ よろしくお願いします!

  • batファイルでのプログラム起動順

    皆さん宜しくお願いします。 OS起動時に複数のプログラムをbatファイルで起動しようとしています。 で、困っているのが起動順です。 たとえば 起動したいプログラムがエクセル・ワード・パワーポイントとして普通に start "" "C:\Program Files\Microsoft Office\Office\EXCEL.EXE" start "" "C:\Program Files\Microsoft Office\Office\WINWORD.EXE" start "" "C:\Program Files\Microsoft Office\Office\POWERPNT.EXE" とします。 個々のプログラムの起動時間が違うのでパワーポイント・エクセル・ワードの順で立ち上がり最前面に出ているのがワードになるとします。 しかし一番最初に使いたいのはエクセルなんです。 タスクバーで入替えればいいのですがエクセルが最前面にしておきたいのです。 batファイルの記述で起動するタイミングを遅らせたりすることは可能でしょうか?

  • BATのIF文について質問

    @echo off cls set LOGFILE=C:\%COMPUTERNAME%.log find C:\temp\setting.txt "SERVER01" /I if %ERRORLEVEL% == 1 GOTO END if %ERRORLEVEL% == 0 ( set MESSAGE=SEVER01の環境です echo %MESSAGE% echo %MESSAGE% >> %LOGFILE% GOTO SET1 ) :SET1 echo テスト >> %LOGFILE% :END こんな簡単なBATを作成してみましたがERRORLEVELが0の時処理されません (「SEVER01の環境です」がLOGに書き込まれません) (もちろんsetting.txtには「SERVER01」の文字が入ってます) (FINDのあと、「echo %errorlevel」を記述して0にもなっているのですが) IFの構文として間違っていますか?どなたかご教授ください。 OSはWindowsXP SP3 64Bitです。

  • コマンドプロンプトの条件分岐について

    こんばんわ。 ちょっとした処理をbatファイルにまとめて実行しようとしているのですが コマンドプロンプトにはあまり馴染みが無い為、条件分岐処理のIfで納得が いかず、よく分からなかったのでこちらの有識者にご教授願いたいと思い 質問させて頂きました。 Cドライブ直下にtestというフォルダが存在するかしないかをEXISTで判定 してあれば「aaaa」、なければ「bbbb」という文字列をECHOを使ってプロン プトに表示するという至極単純なプログラムです。 if exist "C:\test\" goto testa if not exist "C:\test\" goto testb :testa echo aaaaa goto end :testb echo bbbbb :end pause exit /b 上記、プログラムをテキストファイルに保存後、拡張子をbatに変更して 実行すると、正しく「aaaa」と表示されます。 (C直下にtestフォルダがある前提で、なければ「bbbb」が表示されます。) しかし、最初の2行のIfを変更すると動作がおかしくなります。 変更後のIf if exist "C:\test\" goto testa else goto testb もしくは if exist "C:\test\" goto testa else goto testb この状態でC直下のtestフォルダを削除して実行すると「bbbb」が 表示されると思っていたのに「aaaa」が表示されてしまいます。 これは何故なんでしょうか?

  • Batファイルで検索文字を指定しブラウザを起動する

    よろしくお願いいたします。 "C:\Program Files\Microsoft\Edge\Application\msedge.exe" 検索したい文字列 "C:\Program Files\Google\Chrome\Application\chrome.exe" 検索したい文字列 上記のように、Batファイルから、検索したい文字を指定し、chromeなどを起動したいと思っております。 立ちあがったら、すぐにその検索結果を見たいですが、思ったようになりません。 何か良い方法があれば、教えていただけますでしょうか?