![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
末尾のバッチコードは複文(変数がvの方)では動作しませんが、
非複文(変数がwの方)では動作します。
これはバッチ処理の文字列置換機能のバグでしょうか?仕様でしょうか?
意図は、バッチの文字列変換機能の、
%変数:<置換対象文字列>=<置換後文字列>%
により
「<半角スペース>a<半角スペース>b」
を
「ab」
に変換することです。
IF t==t
は無くてもいいのですが、複文をよく使う場合の雰囲気を出すためにつけてあります。
rem 以下コード----------------------------------------------------------------
rem 複文
IF t==t ( Set v= a b
Set v=%v: =% )
echo v=%v%
rem 非複文
Set w= a b
Set w=%w: =%
echo w=%w%
pause
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_14.png?8acaa2e)
No.1ベストアンサー
- 回答日時:
バッチファイル。
IF文やFOR文の中で複数コマンドを書く時の注意点 -Windowsのコマンドプロンプト(bat,cmd)
http://tounderlinedk.blogspot.jp/2011/01/if-wind …
に
>**** 問題となる原因
>o コマンドプロンプトは、コマンドを1つずつ実行します。
>o そして、IF文(やFOR文)は、括弧を含めて1つと解釈します。
>o その結果、IF文(やFOR文)の中にある %環境変数% は、全て、IF文(やFOR文)を
>実行する直前の値で置き換わります。
とあります。
カッコ内で v の設定と参照しても設定が生きてないのが期待通りに動かない原因です。
事前に v をクリアしておき、
カッコ内で echo %v% してみると確認できます。
上のような説明が MS からされてるなら「仕様」でしょう。
()内は、()内で設定した値の%%の中での置換どころか、
参照自体がダメなんですねえ。
普通に考えると、()外と()内の値が相互に参照できないとか、
そういう風ならありそうなのですが、
まさか()内で設定した値を()内で参照できないとは
思ってもみませんでした。
勉強になりました。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- その他(プログラミング・Web制作) 単純なコマンドプロンプトが動きません。 2 2022/04/19 15:21
- Visual Basic(VBA) Excel VBAでAA(BBB) → BBB.AA に置換したい 2 2022/10/30 13:59
- Excel(エクセル) capeofdragonと申します Excel2016を使っておりまして 半角又は全角の任意文字列が 2 2022/10/31 13:51
- Visual Basic(VBA) EXCEL VBA 単語置き換え について質問です ブック名 ぶぶぶ シート名 ししし セル V3〜 3 2023/03/08 01:41
- その他(プログラミング・Web制作) テキストエディタで複数行にわたる文字列の行頭に番号を振る方法 4 2023/03/11 12:57
- Excel(エクセル) Excelの複数置換はSUBSTITUTEを重ねるしかない? 9 2022/05/08 11:25
- Excel(エクセル) エクセル関数の変わった使い方 3 2022/05/13 17:12
- Access(アクセス) Accessのテキストボックスの入力文字制限 1 2023/01/18 20:43
- その他(コンピューター・テクノロジー) 【Tableau Desktop】文字列から8桁の数字を日付型(yyyyMMdd)として取得 1 2023/07/31 10:17
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バッチファイルを実行後、終了...
-
バッチファイルを常に管理者権...
-
バッチプログラムについて(編...
-
バグ?仕様?(バッチ複文での文...
-
リモートデスクトップの取り合...
-
batファイルで、call使っても戻...
-
Windows10のタスクスケジューラ...
-
DOSコマンドのforで空白行をス...
-
oracleのimp-00002エラーについて
-
順番にPINGを飛ばすバッチ
-
回線速度をバッチファイルでフ...
-
WindowsServer2012で、タスクス...
-
batが実行できない
-
バッチファイルでエクセルのマ...
-
コマンドの結果を変数に入れたい
-
ログオンユーザを簡単に切り替え
-
WMICでリモートでバッチが実行...
-
バッチでEnterを認識させ...
-
タスクスケジューラでバッチを...
-
パスを通すバッチファイルの作り方
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Windows10のタスクスケジューラ...
-
DHCP設定バッチnetshコマンドに...
-
バッチファイルを実行後、終了...
-
batファイルで、call使っても戻...
-
リモートデスクトップの取り合...
-
batファイルを実行してコマンド...
-
バッチ実行を意図的に失敗させ...
-
oracleのimp-00002エラーについて
-
バッチでEnterを認識させ...
-
DOSコマンドのforで空白行をス...
-
コマンドの結果を変数に入れたい
-
batが実行できない
-
バッチファイルでPC情報を取得する
-
バッチプログラムについて(編...
-
WMICでリモートでバッチが実行...
-
バッチファイルでエクセルのマ...
-
コマンドプロンプトで最新のフ...
-
DBサーバとバッチサーバ
-
Windowsコマンドプロンプトで環...
-
バッチ実行時にバッチのファイ...
おすすめ情報