我有一个脚本,最后一行将文本文件的最后一行(减去前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
的所有空格?
答案 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 。