我需要循环遍历一行文本中的每个单词并获取最后一个单词。
我使用以下代码来做到这一点。
对于 (%_IFLE_input%) 中的 %%a 执行 ( set _IFLE_last_token=%%a )
_IFLE_last_token= 现在包含最后一个单词。
但是我只是点击了一个包含“)”字符的单词,并且错误地停止了脚本
Close) was unexpected at this time.
文字是“左)关闭”
我尝试将输入变量放在引号中
对于 ("%_IFLE_input%") 中的 %%a 执行 ( set _IFLE_last_token=%%a )
但是 %%a 只是整个字符串,空格等等。
是否有正确的方法来引用字符串,以便 for 将循环遍历每个单词,但不会破坏“)”等字符的 for 循环语法?
我看到的唯一选择是过滤掉所有有毒字符,然后将它们放入空格中。
有没有更好的方法,批量? (或使用未更新的 Windows 10 22h2 可用的外部工具)
处理有问题的字符串的另一种方法是延迟扩展(变量在解析行之后扩展,防止语法错误。
@echo off
setlocal enabledelayedexpansion
set "var=Left)Close"
for %%a in (!var!) do ( set "last=%%a" )
set last
注意:这样当字符串包含一个或多个!
时就会出现问题。正如您所说的“文本文件中的每一行”:
@echo off
setlocal enabledelayedexpansion
set "var=Left!Close"
for /f "delims=" %%x in (test.txt) do (
for %%a in (%%x) do ( set "last=%%a" )
echo !last!
)