Echo没有领先的空白?

时间:2017-01-26 11:40:33

标签: batch-file cmd echo whitespace

我有一个脚本,最后一行将文本文件的最后一行(减去前7个字符)回显到另一个文件:

for /f "delims==" %%a in (c:\file1.txt) do set lastline=%%a
echo(%lastline:~7%> file2.txt

线条看起来像这样(我只用上面的代码抓住名字):

4.53 - Billy
2.63 - Mark
12.42 - Tom

问题是,如果最后一行以小数点前的两位数字开头。 echo仍然有效,但输出包含-和名称之间的 SPACE ,因为它跳过了7个字符。我必须迎合两者。

有没有办法echo而不包括领先 SPACEs ?或者我可以在之后添加一行可以删除file2.txt的所有空格?

1 个答案:

答案 0 :(得分:1)

我不会尝试删除领先的SPACE,我会更改删除号码的方法。应用此选项可删除所有内容,包括 SPACE - SPACE

echo(%lastline:* - =%> file2.txt

或更好的语法:

> file2.txt echo(%lastline:* - =%

后一种变体更好,以避免在回显的字符串的最后一个字符是单个数字时出现问题,并通过标记分隔符与其余字符分开,因为它与>符号一起构成一个redirection operator,例如2>

为了完整起见,要删除前导空格,请使用:

for /F "tokens=*" %%L in ("%STRING%") do echo(%%L

这是有效的,因为for /F的默认分隔符是 SPACE TAB