2015-06-24 45 views
0
for /l %x in (1, 1, 10) do echo|set /p= SampleOut,>log.txt 

我试图输出消除空间

SampleOut,SampleOut,SampleOut... 

到一个文本文件,但上面的命令我只得到

SampleOut, SampleOut, SampleOut... 

怎么办我删除输出到该文本文件的空间?

回答

2
for /l %x in (1, 1, 10) do echo|set /p "=SampleOut,">>log.txt 

始终使用"双引号set "varname=varvalue",以避免双方varnamevarvalue与不需要的领先和/或尾随空格的问题。例如,未来set命令导致不同的结果:

set "varname=varvalue" 
set "varname =varvalue" 
set "varname= varvalue" 
set "varname=varvalue " 
+0

谢谢它解决了我的问题。 –

2
(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的输入流重定向,以避免在每次迭代中都要这样做。

+0

感谢它解决了我的问题。 –