小编Koo*_*laa的帖子

为什么 Windows shell 的 for 命令会替换分号?

我正在尝试编写一个小脚本来替换 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

如何确保分号不被空格替换?

windows shell cmd batch-file

3
推荐指数
1
解决办法
82
查看次数

标签 统计

batch-file ×1

cmd ×1

shell ×1

windows ×1