@ECHO off
setlocal EnableDelayedExpansion
set "VAR=da da da YES123123"
echo %VAR% > testing.txt
FOR /F %%a in ('findstr "YES" .\testing.txt') do (
set BLAH=%%a
set "BLAH2=%BLAH: =%"
set "FINAL=%BLAH2:~15%"
echo %FINAL%
)
endlocal
无论是WITH还是WITHOUT“setlocal EnableDelayedExpansion”,批处理文件都无法正常工作 .
但到目前为止,这就是我所拥有的一切 . 但是,我还想从FINDSTR字符串中去除前面的字符,但是将变量设置为FINDSTR字符串AND IT'S SUCCEEDING 123123字符 . 不幸的是,它不起作用 . 它只输出“ECHO关闭” .
我在其他方面正确地使用了FOR,但这次我想不通 . 任何帮助将不胜感激 .
3 回答
要得到最后一个单词,请使用普通
for
来按默认分隔符(空格,制表符,逗号,=)拆分字符串 . 不需要知道,有多少令牌 . 以下工作,即使有更多行YES
:EDIT 找到
YES
直到行尾:"all the rest"有一个令牌
*
,所以你可以这样做:但我推荐另一种方法(用
YES
替换*YES
) .set
可以做有限的通配符替换(*string
有效,但string*
没有) . 优点:您不需要知道哪个令牌YES...
是:理解第一个意思
Tokens 表示只占用stdout的第1列或第2列或......
skip 表示从标准输出列表中跳过第1,2行............
delims 表示这些列彼此分隔的方式(空格或点或斜线..........)
好的,我明白了 . 不得不使用“令牌= 1,2,3,4,delim =”的东西,我讨厌使用它并且令人困惑,但之前已经将它用于其他目的 . 我真的很困惑如何在命令结束时回显或设置变量到令牌 . 这是更正后的代码 .