• ベストアンサー

バッチファイルでのスペースの入力

コマンドプロンプトのバッチファイルで・・・ set /p menu= if %menu%. EQU . goto err if %menu% EQU cd /usr/local goto next if %menu% EQU exit goto end で、cd /usr/local を入力させたいのですが上手くいきません。(cdの後のスペースが問題なのですが) ””で囲んでもダメでした。 スペースを含んだ文を入力させるset文の方法を教えてください。

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

  • ベストアンサー
  • dell_OK
  • ベストアンサー率13% (739/5635)
回答No.3

環境変数の方も""で囲むとうまくいきました。 if "%menu%" EQU "cd /usr/local" goto next 試してみてください。

その他の回答 (2)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

if %menu% EQU "cd /usr/local" goto next として "cd /usr/local" と入力させる あと、 set menu= set /p menu= とした方がいいと思う

回答No.1

ifには、全部 gotoを書いておいて飛ばすのがいいのでは。 if %menu%. EQU . goto err if %menu% EQU goto next if %menu% EQU goto end :cddd cd /usr/local :end :err

関連するQ&A

  • バッチファイルで悩んでいます。

    プログラミング初心者です。 御教授の程、宜しくお願いします。 以下のプログラムは 1.ユーザーからフォルダをドラッグ・アンド・ドロップしてもらう。 2.ユーザーに日付を入力してもらう(yyyymmdd方式) 3.ユーザーに下記の2つから選んでもらう。   1.入力した日付よりも前に更新されたファイルを表示   2.入力した日付よりも後に更新されたファイルを表示 4.ユーザーから受け付けた条件で、サブフォルダも含めて   コマンドプロンプト上に    更新日時 ファイルへのパス   を表示する。 ------------------------------------------- list.bat echo off set /P YYYYMMDD=日付を入力してください(YYYYMMDD): :loop echo ---------------------------------------------------- echo 入力した日付よりも前に更新されたファイルを表示 - [1] echo 入力した日付よりも後に更新されたファイルを表示 - [2] echo ---------------------------------------------------- set /P chk= 1 か 2 を入力してください: if not defined chk goto loop if %chk% EQU 1 set op=LSS&goto listup if %chk% EQU 2 set op=GTR&goto listup goto loop :listup echo. for /R %1 %%F in ( *.* ) do call :sub "%%~fnxF" %%~tF cmd /k :sub set fdate=%2 set fdate=%fdate:/=% if %fdate% %op% %YYYYMMDD% echo %2 %3 %1 goto :EOF このプログラムに関しまして、 4.ユーザーから受け付けた条件で、サブフォルダも含めて   コマンドプロンプト上に    更新日時 ファイルへのパス   を表示する。 をコマンドプロンプト上にではなく、エクセルファイル上に変更したいです。 教えて頂きますと助かります。 それでは、宜しくお願い致します。

  • バッチのcallの使い方で、これって合ってるか教えてください。

    下記のようなバッチスクリプトを作りました。 ************************************** FC AAA.txt BBB.txt if not %errorlevel% EQU 0 call :ERR-SEC 10 FC CCC.txt DDD.txt if not %errorlevel% EQU 0 call :ERR-SEC 11 exit 0 :ERR-SEC echo 終了コード:[%1] > EEE.log exit %1 ************************************** 気にしているのはcallの使い方です。 どこの処理でエラーが起きたかあとでわかるように、 callでエラーセクションをパラメータを渡して呼び出し、 引数をログ出力と終了値に使用しています。 callは本来、2回終わらせる必要があると参考書に記載されていたのですが、 このバッチではexitで無理やり終わらせています。 このような使い方は問題ないでしょうか? なにか気になる点があればぜひ教えてください。 よろしくお願いします。 ちなみにOSはWindows2003Serverです。

  • 遅延環境変数 バッチファイル(.batファイル)

    下記のプログラムで 1_あ001 2_い002 3_う003 や 1_い1 2_ろ2 3_は3 のようにフォルダを作りたいです。 下記実行するとうまくいきません。 遅延環境変数をどうセットしたらよいでしょうか。 よろしくお願いいたします。 @echo off setlocal enabledelayedexpansion SET aiu_1=あ SET aiu_2=い SET aiu_3=う SET iroha_1=い SET iroha_2=ろ SET iroha_3=は echo あいう→1 or いろは→2? set /p SELECT= if %SELECT% equ 1 ( set KANA=aiu ) else if %SELECT% equ 2 ( set KANA=iroha ) else ( echo 数値が違います。終了します。 exit /b ) echo 0埋めなし→1 or あり→2? set /p SELECT1= if %SELECT1% equ 1 ( set SUFFIX= ) else if %SELECT1% equ 2 ( set SUFFIX=000 ) else ( echo 数値が違います。終了します。 exit /b ) set i=1 :ForEach set it=!%KANA%_%i%! if defined it ( set SUFFIX1=%SUFFIX%%i% mkdir %i%_%it%%SUFFIX1:~-3% set /a i+=1 goto:ForEach ) あいう→1 or いろは→2? 2 0埋めなし→1 or あり→2? 2 を選択すると 1_い~-3 2_ろ001 3_は002 となります。 あいう→1 or いろは→2? 1 を選択すると、0埋めなし→1 or あり→2? でどちらを選んでも フォルダ作成なしです。 また!~!の指定箇所によりフォルダを作り続けるため強制停止が必要になります。

  • バッチファイルのIF分岐にて任意の文字を入力しておきたい

    バッチファイルのIF分岐にて任意の文字を入力しておきたいです。 下記のようなバッチファイルを作成し、「1」を入力すると「:AAA」のラベル に飛びメッセージが表示されるようにしています。 最初から「1」が自動で入力されているような状況にすることはできますでしょうか? 「set NUM=1」にしておけば、Enterを押すだけで「1」が入力されている のはわかったのですが、DOS上に「1」が表示されていません。 入力待ちの際に「1」が入力されている状況を作りたいと思っています。 Windows XP 32bitで動作させたいです。 お手数ですが知識をお借りしたいと思います。 もしくは「ここを見ろ」というのをご教授ください。 -------------------------------------------------- @echo off :LOOP set NUM= cls echo. echo "1. AAA" echo "2. BBB" echo "0. 終了" echo. echo. set /p NUM="番号を入力してください >" if %NUM% == 1 goto :AAA if %NUM% == 2 goto :BBB if %NUM% == 0 goto :owari echo 番号がありません echo. pause goto :LOOP :AAA echo "AAAです" echo. pause goto :LOOP :BBB echo "BBBです" echo. pause goto :LOOP :owari echo 終了します echo. pause goto :eof --------------------------------------------------

  • バッチファイル goto前の表示のクリア

    バッチファイルでgoto前の表示のクリアしたいです。 どうしたらよいでしょうか? ●記述: :Select echo 選択_______ echo 1 --- 1です echo 2 --- 2です echo 0 --- 終了 set /P Res="入力 >>>>>>> " if "%Res%"=="1" goto 1 if "%Res%"=="2" goto 2 if "%Res%"=="0" goto END goto Select :1 echo. echo 111 echo. goto SELECT :2 echo. echo 222 goto SELECT ●結果: 選択_______ 1 --- 1です 2 --- 2です 0 --- 終了 入力 >>>>>>>1 111 選択_______ 1 --- 1です 2 --- 2です 0 --- 終了 入力 >>>>>>> ●入力後表示したい文字列(以下だけ): 選択_______ 1 --- 1です 2 --- 2です 0 --- 終了 入力 >>>>>>>

  • バッチファイル(.bat)へWSH(.wsf)のエラーコードの返し方について

    はじめまして、kiwi88と申します。 バッチファイル(.bat)からwshスクリプト(.wsf)を呼び出すプログラムを作成しました。 そこで、wshスクリプトで実行されたエラーコードを呼び出しもとのバッチファイル(.bat)に返すことはできますでしょうか。 以下はバッチファイル(.bat)からwshスクリプト(.wsf)を呼び出す箇所のソースです。 ◆バッチファイル(test.bat)◆ ---------------------------------------- ~※処理内容省略~ cscript test.wsf //nologo //Job:wshscript > batch.log IF %ERRORLEVEL% NEQ 0 GOTO ERR exit :ERR set ret=%ERRORLEVEL% echo ****** [%:ERRORLEVEL=%ret%] ****** > err.txt exit %ret% ---------------------------------------- 以下はwshスクリプト(.wsf)のエラーコードを返す箇所のソースです。 ◆wshスクリプト(test.wsf)◆ ---------------------------------------- <job id = "wshscript"> <script language = "VBScript"> <![CDATA[ Option Explicit Function Main() ~※処理内容省略~ err = Err.Number Main = err End Function ]]> </script> </job> ---------------------------------------- 長くなってしまい、申し訳ありませんが、 ご教授願えますでしょうか。 宜しくお願いいたします。

  • バッチファイルでカウントアップするには

    :loop set id=0 if '%1' == '' goto end cd %1 if exist %1 for %%i in (*.bmp) do ( set id+=1 echo %id% ) shift goto loop :end pause バッチファイルをSend Toフォルダにおいて 送られてきた画像データをカウントアップしていきながら名前を id.bmp変えていきたいのですが、 idをカウントアップさせたいのですが方法がわかりません。 どうすればカウントアップされるのでしょうか?

  • バッチファイルの変数について

    以下のバッチファイルを作成して実行したのですが、PATH_NAMEの変数が 設定されず、ファイルコピーがされません。 どのように、コードを記載すれば良いのでしょうか。 ご教授願います。 REM コピーするファイル数を設定 SET /a FILE_NUM = 2 REM コピー元のパスを設定 SET PATH_P1=C:\Copy01.txt SET PATH_P2=C:\SAMPLE\Copy02.txt REM 上記で設定したファイルを順番にC:\TEST\へコピーする SET /a N=1 :LOOP SET /p PATH_NAME = PATH_P%N% copy %PATH_NAME% C:\TEST\ if "%N%"== "FILE_NUM " (goto EXIT) SET /a N=N+1 goto LOOP :EXIT

  • コマンドプロンプトのバッチファイルについて教えてください

    お手数ですが教えてください。 コマンドプロンプトでSQL*LORDERを起動するバッチを 作成したいのですが以下の条件がうまくいきません。 「ロードするデータ(テキストファイル)が0件(データなしの0KB) であればSQL*LORDERを起動しない」というのはどのようにすれば 解決できますか? コマンドプロンプトのSET文でTYPE文の結果を環境変数に入力することができませんでした。 また、IF文にDIRの結果を記述できませんでした。 データがない場合はSQL*LORDERを失敗させることは出来ましたが 現在入っているデータが初期化されてしまいました。 なにかいい方法はないでしょうか? よろしくおねがいします。

  • MS-DOSの起動ディスクでループする?

    どうにもいきづまってしまいましたのでお力を貸して下さい。 WindowsXPからMS-DOSの起動ディスクをフロッピーディスクで作成してAUTOEXEC.BATに下のように書いたのですがメニューから入力するところで止まらずうまくいきません。 Windowsのコマンドプロンプト上ではうまくいくのですが、調べてみたらコマンドプロンプトとMS-DOSが別ものということはわかったのですがどのように直していいかわかりません。 すみませんがご教授いただけないでしょうかよろしくお願いします。 環境 OS:Windows XP Pro PC:NEC VersaPro :Main cls @echo off rem メニュー echo キー入力後、エンターで決定して下さい echo [0] 処理 echo [E] 終了 rem 入力値の取得 set /p input= if defined input set input=%input:"=% rem 入力値判断 if /i "%input%" == "0" (goto KAKUNIN) if /i "%input%" == "E" (goto exit) else goto Main goto main :KAKUNIN cls echo 処理をしていいですか? Y/N set /p input= if defined input set input=%input:"=% if /i "%input%" == "Y" (goto SYORI) if /i "%input%" == "N" (goto Main) else goto KAKUNIN :SYORI 処理をする pause :exit