我正在尝试编写一个小脚本来替换 Windows 路径中的值。使用一些 sed 来替换它很好(我有正确的变量):
echo %path% | sed "s/jvms\\[^^\]\+/jvms\\%1/"
Run Code Online (Sandbox Code Playgroud)
这工作正常。但是,我想将它分配给一个新的路径变量。这样做的方法应该是
for /f "delims=" %%B in ('echo %path% ^| sed "s/windows/C64/"' ) do call set replaced=%%B
echo %replaced%
Run Code Online (Sandbox Code Playgroud)
请注意 | 应该逃脱。但是,新replaced变量将所有分号都替换为空格。因此,输出echo %replaced%类似于c:\C64 c:\program files c:\otherdirectory而不是c:\C64;c:\program files;c:\otherdirectory
当我不使用任何 sed 时,这已经发生了,所以
for /f "delims=" %%B in ('echo %path%' ) do call set replaced=%%B
echo %replaced%
Run Code Online (Sandbox Code Playgroud)
然后返回 c:\Windows c:\program files c:\otherdirectory
如何确保分号不被空格替换?