如何阻止批处理文件将额外的行回显到文件中? [复制]

Posted

技术标签:

【中文标题】如何阻止批处理文件将额外的行回显到文件中? [复制]【英文标题】:How to stop batch file from echoing extra line into file? [duplicate] 【发布时间】:2022-01-12 02:19:28 【问题描述】:

我有以下代码通过将变量回显到文件中来读取变量的长度,而不是读取文件长度:

echo %scor% > scorfile.txt
FOR %%? IN (scorfile.txt) DO ( SET /A scorlength=%%~z? - 2 )
if %scorlength%==12 set /a scorlength=1
del /Q scorfile.txt
echo %scorlength%
pause

它认为变量是一个额外的字符,当我打开 scorfile.txt 时,有一个额外的行,我相信这就是导致问题的原因。我该如何解决?谢谢!

【问题讨论】:

@WeeTomatoBall, echo %scor% > scorfile.txtechoing %scor%[space] 到文件。那个空间显然是一个额外的字符!使用>scorfile.txt echo %scor%,或者最好使用(echo %scor%) 1>"scorfile.txt" 【参考方案1】:

我相信这就是您要找的:

echo | set /p="%scor%" > scorfile.txt
FOR %%? IN (scorfile.txt) DO ( SET /A scorlength=%%~z? )
if %scorlength%==12 set /a scorlength=1
del /Q scorfile.txt
echo %scorlength%
pause

修改了第一行和第二行。第一个修改从输出中删除换行符,第二个修改删除了您所拥有的等式的 - 2 部分,因为我假设您最初使用它是为了尝试补偿换行符计数问题。

希望这能解决您的问题!

【讨论】:

以上是关于如何阻止批处理文件将额外的行回显到文件中? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

使用带有特殊字符的批处理回显

将变量内容回显到文本文件中的批处理脚本[重复]

在批处理脚本中回显到多个文件

将 URL 回显到网络驱动器上名称中带有空格的文件

使用多行将字符串回显到 .txt 文件 - 使用 Windows 批处理文件

for循环中的多个do命令:将字符串回显到文件然后重定向到命令窗口