(为清晰起见编辑了问题)
将子串操作应用于FOR中的标记值不起作用:
for /F "tokens=1 delims=" %%G in ("tokenvalue ") do (
Echo %%G:~-1
)
子字符串操作不会删除末尾的空格。相反,:~-1
会附加到回显的结果中以生成:
tokenvalue:〜-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
应该足够了。