该行
(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
正如所料。
如何阻止“)”添加此空间?
答案 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
...(我改变了目录以适应我的系统)