2012-08-09 35 views
7

変数を使用するときに、このバッチファイルを使用して部分文字列の置換を行うことができません。特に!オリジナル!変数が指定されている。リテラル文字列の場合はうまく動作します。しかし、これは私の用法ではありません。変数を使用したバッチファイルの部分文字列置換

setlocal ENABLEDELAYEDEXPANSION 
set original=chair 
set replacement=table 
set str="jump over the chair" 
set str=%str:!original!=!replacement!% 

ご協力いただき誠にありがとうございます。

答えて

3

拡張注文を元に戻しました。

ノーマル(パーセント)拡大は、解析時間(1日)で発生
遅延(感嘆符)展開は(第二)

検索や用語を置き換える実行時に発生するには、検索の前に展開され、場所を取ることができ置き換えるする必要があります。だから、欲しい:

set str=!str:%original%=%replacement%! 
+0

おかげに解析されます、それは私の別の問題かもしれません。私の問題は、IF文がバッチファイルでどのように動作するかを理解していないことだと思います。私はIF文のTHENセクションにこれを置いていました。そのため、私は1つの変数だけの評価結果が得られたと思います。このリンクは私を助けました:http://stackoverflow.com/questions/4367297/how-to-substitute-variable-contents-in-dos – delpium

12

をごcallを使用している場合は、そのように、setlocal enabledelayedexpansionを必要とせずにこれを行うことができます。

call set str=%%str:%original%=%replacement%%%

注:この最初はcall set str=%str:chair=table%

関連する問題