通过批处理命令消除输出到文件的文本的空间

时间:2015-06-24 20:38:12

标签: batch-file

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

我正在尝试输出

SampleOut,SampleOut,SampleOut...

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

SampleOut, SampleOut, SampleOut...

如何删除输出到该文本文件的空间?

2 个答案:

答案 0 :(得分: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 "

答案 1 :(得分:2)

(for /l %x in (1, 1, 10) do @set /p"=SampleOut,") <nul >>log.txt

您的代码有三处更改:

    现在引用
  • set命令以避免意外空间出现问题

  • 完整的for命令被重定向到日志文件。这样输出文件只打开一次,写入所有数据然后关闭文件。在您的代码中,每次迭代都会执行open / write / close。

  • echo|set已被删除。管道的问题在于它是在进程之间创建的,因此管道的两端都需要一个单独的cmd实例来执行内部命令,并且对于每次迭代,需要创建两个进程。

使用从set /p设备读取的输入流执行nul与您的管道具有相同的结果,在没有结束回车和换行的情况下回显提示值。

在发布的代码中,我重定向了完整for的输入流,以避免在每次迭代中都这样做。