CMD变量替换参数

the*_*mel 5 windows shell cmd

我试图让CMD等同于以下bash功能:

$ FOO=foo.bar
$ BAR=bar
$ BAZ=baz
$ echo ${FOO/$BAR/$BAZ}
foo.baz
Run Code Online (Sandbox Code Playgroud)

现在,当模式和替换都是常量时,CMD有一些类似的命令替换:

C:\>set FOO=foo.bar
C:\>set BAR=bar
C:\>set BAZ=baz
C:\>echo %FOO:bar=baz%
foo.baz
Run Code Online (Sandbox Code Playgroud)

但是,我似乎无法在那里引用变量 -

C:\>echo %FOO:%BAR%=%BAZ%%
%foo:bar=baz%
Run Code Online (Sandbox Code Playgroud)

我该怎么办?用于指出FOR 在批处理文件中循环内部也能正常工作的奖励点.

Chr*_*n.K 4

以下(批处理文件)应该可以工作并打印“foo.baz”:

  setlocal enabledelayedexpansion
  set FOO=foo.bar
  set BAR=bar
  set BAZ=baz

  echo !FOO:%BAR%:%BAZ%!
Run Code Online (Sandbox Code Playgroud)

(关于你提到的 FOR 循环,你需要提供更多关于你的意思的信息。)