for /l %x in (1, 1, 10) do echo|set /p= SampleOut,>log.txt
我正在尝试输出
SampleOut,SampleOut,SampleOut...
到一个文本文件,但是上面的命令我只得到
SampleOut, SampleOut, SampleOut...
如何删除输出到该文本文件的空间?
答案 0 :(得分:2)
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 "
答案 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
的输入流,以避免在每次迭代中都这样做。