我如何防止")"添加空间?

时间:2014-10-17 22:42:39

标签: windows-7 cmd

该行

(FOR %F IN ("Q:\Playlists\A 1*.m3u") DO @echo "%~nF")| sed -E "s/.*/x&y/"

产生

x"A 1 T Soft FC La melodia de nuestro adios" y

而不是

x"A 1 T Soft FC La melodia de nuestro adios"y

正如所料。

如何阻止“)”添加此空间?

2 个答案:

答案 0 :(得分:1)

问题在于您正在解析和执行您键入的命令的方式。管道的每一侧都在cmd.exe的单独实例内执行。这些实例不会执行您键入的代码,而是执行解析器重新解释的稍微不同的版本。在此步骤中,包含了附加空间(here您可以通过dbenham找到更深入的分析)

我们无法避免解析器的工作方式,但我们可以生成一个命令,其中添加的空格不会影响输出

cmd /q /c "(for %f in ("Q:\Playlists\A 1*.m3u") do echo("%~nf")"| sed -E "s/.*/x&y/"

答案 1 :(得分:0)

(@FOR %F IN ("u:\sourcedir\A 1*.m3u") DO @ECHO x"%~nF"y)

对我来说非常好。不知道你为什么使用sed ...(我改变了目录以适应我的系统)