Windows cmd echo/pipe最后会增加额外的空间 – 如何修剪它?
我正在编写一个执行命令行应用程序的脚本,该应用程序需要在运行时输入用户(很遗憾,不提供命令行参数).
所以我的第一次尝试看起来像这样: @echo off (echo N echo %~dp0%SomeOtherDirectory echo Y)|call "%~dp0%SomeDirectorySadSoftware.exe" 乍一看,它看起来效果很好,但事实证明它没有.经过调查,我发现我传递给软件的目录最后包含了额外的空间,这导致了一些问题. 我环顾了一会儿,发现了以下问题: 这解释了发生了什么,但并没有真正帮助我解决我的问题(我对批处理编程不太熟悉). 目前,我用一种丑陋的解决方法“解决了”我的问题: echo N> omg.txt echo %~dp0%SomeOtherDirectory&;> omg.txt echo Y>> omg.txt "%~dp0%SomeDirectorySadSoftware.exe"<omg.txt del omg.txt 这个解决方案有效,但我对它不满意.有更漂亮的方式吗?甚至更丑陋的方式,但没有临时文件? 解决方法
解决方案1:换行
您可以使用换行来避开空格. 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:Windowssystem32cmd.exe /S /D /c" (<space>echo line1<space>&<space>echo line2<space>)" 所以换行技巧会产生类似的线条 C:Windowssystem32cmd.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 解决方案3:创建一个命令 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计划任务
- buildbot在Windows上作为服务
- Windows – 文件的内存映射与CreateFile / ReadFile [已关闭
- windows – 我可以在git中修改一个名称取决于操作系统的路径
- microsoft-graph – 无法访问Microsoft Graph API中的/ out
- wpf – Window.Margin&Window.Padding不工作
- wpf – 如何在Expression Blend中使用CollectionViewSource
- 如何检查Windows中的vbs脚本是否正在运行?
- 在Windows中强制python版本
- winapi – 与DLL的隐式与显式链接