(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
如預期。
如何防止「)」添加此空間?
(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
如預期。
如何防止「)」添加此空間?
問題是你輸入的命令被解析和執行的方式。管道的每一側都在cmd.exe
的獨立實例內執行。這些實例不會執行您鍵入的代碼,而是由解析器重新解釋的稍微不同的版本。在這一步中已經包含了aditional空間(here,你可以通過dbenham找到更深入的分析)
我們不能避免解析器的工作方式,但我們可以生成一個命令,其中添加的空格不會影響輸出
cmd /q /c "(for %f in ("Q:\Playlists\A 1*.m3u") do echo("%~nf")"| sed -E "s/.*/x&y/"
哦,親愛的。我沒有意識到CMD是多麼的真實。謝謝。 FTR,基於你的最小變化修正爲:cmd/q/c「(FOR%F IN(」Q:\ Playlists \ A 1 * .m3u「)DO @echo」%〜nF「)」| sed -E「s /.*/ x&y /」 – ChrisJJ 2014-10-18 10:22:19
@ChrisJJ,'cmd'調用中的'/ q'開關意味着以echo off開頭,所以你不需要前綴'@'。 – 2014-10-18 10:47:34
謝謝。因此,最小變化修正爲:cmd/c「(FOR%F IN(」Q:\ Playlists \ A 1 * .m3u「)DO @echo」%〜nF「)」| sed -E「s /.*/ x&y /」。你的/ q比@有優勢嗎? – ChrisJJ 2014-10-21 14:33:54
(@FOR %F IN ("u:\sourcedir\A 1*.m3u") DO @ECHO x"%~nF"y)
對我來說工作得非常好。不知道你爲什麼使用sed
...(我改變了目錄以適應我的系統)
是的,這也適用於我......但是沒有答案:) SED給予更大的靈活性。 – ChrisJJ 2014-10-17 23:54:11
Ash Burlaczenko,我刪除了您添加的批處理文件標記。這個問題不是關於批處理文件。 – ChrisJJ 2014-10-17 23:07:07