大佬教程收集整理的这篇文章主要介绍了Windows cmd echo/pipe最后会增加额外的空间 – 如何修剪它?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
所以我的第一次尝试看起来像这样:
@echo off (echo N echo %~dp0%someOther\Directory\ echo Y)|call "%~dp0%someDirectory\SadSoftware.exe"
乍一看,它看起来效果很好,但事实证明它没有.经过调查,我发现我传递给软件的目录最后包含了额外的空间,这导致了一些问题.
我环顾了一会儿,发现了以下问题:
echo is adding space when used with a pipe
这解释了发生了什么,但并没有真正帮助我解决我的问题(我对批处理编程不太熟悉).
echo N> omg.txt echo %~dp0%someOther\Directory\>> omg.txt echo Y>> omg.txt "%~dp0%someDirectory\SadSoftware.exe"<omg.txt del omg.txt
您可以使用换行来避开空格.
rem.需要避免注入的问题.通过cmd.exe
SET LF=^ REM ** The two empts lines are required for the new line ** ( echo line1%%LF%%rem. echo line2%%LF%%rem. echo line3%%LF%%rem. ) | sort
通过管道传输块时,cmd.exe将通过在每个命令之间构建一条与“&”符号相结合的行来重建块.
( echo line1 echo line2 ) | sort
将转换为
C:\Windows\system32\cmd.exe /S /D /c" (<space>echo line1<space>&<space>echo line2<space>)"
所以换行技巧会产生类似的线条
C:\Windows\system32\cmd.exe /S /D /c" ( echo line1%LF%rem. & echo line2%LF%rem. )"
这扩展到了
( echo line1 rem. & echo line2 rem. )
解决方案2:逃脱的&符号
您也可以直接使用&符号,但它们需要转义,否则无论如何都会注入空格.
最后一个.是在最后一次回声后避开空格
( echo Line1^&echo Line2^&echo Line3^&rem. ) | more
cmd /q /c"(echo line1&echo line2&echo line3)" | sort
这是有效的,因为解析器只看到cmd命令,其余部分作为此单个命令的参数处理.
因此空间没有任何问题.
或者使用它看起来的换行符
cmd /q /c"(echo line1%%LF%%echo line2%%LF%%echo line3)"| (sort > out.txt)
然后你也可以修改它
cmd /q /c^"(echo line1%%LF%%^ echo line2%%LF%%^ echo line3)^"| (sort > out.txt)
以上是大佬教程为你收集整理的Windows cmd echo/pipe最后会增加额外的空间 – 如何修剪它?全部内容,希望文章能够帮你解决Windows cmd echo/pipe最后会增加额外的空间 – 如何修剪它?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。