将子字符串操作应用于FOR标记值(批处理文件)

时间:2011-05-18 20:35:13

标签: batch-file cmd token

(为清晰起见编辑了问题)

将子串操作应用于FOR中的标记值不起作用:

for /F "tokens=1 delims=" %%G in ("tokenvalue ") do (
    Echo %%G:~-1
)

子字符串操作不会删除末尾的空格。相反,:~-1会附加到回显的结果中以生成:

  

tokenvalue:〜-1

1 个答案:

答案 0 :(得分:2)

我不能在这里重现你的问题。只有当我在输入文件中附加一个空格时,它才会出现在输出文件中。

如果你这样做

echo %%G >> D:\newfile.txt

然后显然会附加一个空格。如果您在发布此处之前简化了代码,则可能就是这种情况。

如果您确实从输入中的空格开始,请使用以下内容:

setlocal enabledelayedexpansion
for /f "tokens=1 delims=" %%G in (D:\originalFile.txt) do (
    set "line=%%G"
    echo !line:~-1!>>D:\newfile.txt
)

您只能将子字符串操作应用于环境变量,因为帮助已经存在。

在任何情况下,如果您确定输入文件不包含尾随空格,那么您实际上并不需要循环。一个简单的

type D:\originalFile.txt >> D:\newfile.txt

应该足够了。