批处理:从包含第一行文件的变量中删除换行符

时间:2014-03-14 12:54:56

标签: batch-file io compare

我有一个包含ID的变量。这个ID我想写入一个文件,然后检索它以便进一步处理。之后可以将其他内容写入文件,因此我使用/P仅检索第一行。

SET ID=%RANDOM%
ECHO %ID% >> my_file.txt

SET /P LINE=< my_file.txt
ECHO %ID%==%LINE%?
IF "%ID%" == "%LINE%" (
    ECHO Equal!
) ELSE (
    ECHO Not equal!
)

输出:

  

15770 == 15770?
  不等于

我注意到问号前面的空白字符。我的想法是它是linefeed,所以我将脚本扩展到:

SET ID=%RANDOM%
ECHO %ID% >> my_file.txt

SET /P LINE=< my_file.txt

REM Try to remove the linefeed.
SET LINE2=%LINE:~0,-1% 
ECHO %ID%==%LINE2%?
IF "%ID%" == "%LINE2%" (
    ECHO Equal!
) ELSE (
    ECHO Not equal!
)

输出:

  

16332 == 16332?
  不等于

我仍然会得到一个空白字符,但是从原始输入中删除两个字符,删除其中一个数字。

如何转换my_file.txt中第一行的输入,以便获得一个可以与我写入文件的原始值进行比较的值?

2 个答案:

答案 0 :(得分:2)

如果您使用此格式,则不需要尾随字符
并且在正常使用中不会有换行符:

>>my_file.txt ECHO %ID%

当你使用它时,在变量内容之后有一个空格,这通常被使用,因为在重定向字符之前像1这样的单个数字将无法回显数字。

ECHO %ID% >> my_file.txt

答案 1 :(得分:1)

您可以随时使用

set /a line=%line%

如果您确定所读取的数据是数字,则删除任何杂散空格(前导或尾随)。