for /l %x in (1, 1, 10) do echo|set /p= SampleOut,>log.txt
我试图输出消除空间
SampleOut,SampleOut,SampleOut...
到一个文本文件,但上面的命令我只得到
SampleOut, SampleOut, SampleOut...
怎么办我删除输出到该文本文件的空间?
for /l %x in (1, 1, 10) do echo|set /p= SampleOut,>log.txt
我试图输出消除空间
SampleOut,SampleOut,SampleOut...
到一个文本文件,但上面的命令我只得到
SampleOut, SampleOut, SampleOut...
怎么办我删除输出到该文本文件的空间?
for /l %x in (1, 1, 10) do echo|set /p "=SampleOut,">>log.txt
始终使用"
双引号set "varname=varvalue"
,以避免双方varname
和varvalue
与不需要的领先和/或尾随空格的问题。例如,未来set
命令导致不同的结果:
set "varname=varvalue"
set "varname =varvalue"
set "varname= varvalue"
set "varname=varvalue "
(for /l %x in (1, 1, 10) do @set /p"=SampleOut,") <nul >>log.txt
有三种修改了代码:
set
命令现在报价以避免不需要的空间问题
全部for
命令被重定向到日志文件。这样输出文件只打开一次,所有数据写入,然后文件关闭。在你的代码中,每次迭代都会执行open/write/close。
echo|set
已被删除。管道的问题在于它是在进程之间创建的,因此管道的两侧都需要一个单独的cmd
实例来执行内部命令,并且对于每次迭代,都需要创建两个进程。
执行与它的输入流从nul
装置读取set /p
有相同的结果,你的管,呼应没有结束回车和换行的提示值。
在发布的代码中,我已将整个for
的输入流重定向,以避免在每次迭代中都要这样做。
感谢它解决了我的问题。 –
谢谢它解决了我的问题。 –