这是新脚本,但它仍然不起作用
我得到命令的语法不正确。
上 FOR/F "USEBACKQ tokens=*"%%A IN (
TYPE "C:\Windows\System32\tasks\at!num! ^| FIND "Command") DO (
SETLOCAL ENABLEDELAYEDEXPANSION
set num=1
:START
IF NOT EXIST "C:\Windows\System32\tasks\at%num%" (GOTO:EOF)
FOR /F "USEBACKQ tokens=*" %%A IN (`TYPE "C:\Windows\System32\tasks\at!num! ^| FIND "Command"`) DO (
set var=%%A
ECHO %var%
SET /a num=%num%+1
PAUSE
)
GOTO:START
最佳答案
为了理解您的代码,我将首先将其分解为逻辑,然后尝试解决它。如果我错过了细节,请告诉我...
Set num var to 0
Begin :Loop
set num var to its current value ::NOT NEEDED - You've specified this prior to the GOTO
increment num var by +1
if myfolder\at* file exists then read at%num% and find a string then output that line to %tmp%\1.txt ::Need quotations on file location.
set F var to the line stored in %tmp%\1.txt
set F="%%F: =%%" ::Please explain what you are trying to do with this command.
set F to start on 10th character and remove the last 11 characters from the line.
echo the variable
If it doesn't exist, exit, but if it does return to :Loop
您应该告诉我们您正在尝试什么。如果就像从文本文件输出中保存变量一样简单,set F=<file.txt
将工作。如果没有,那么在该命令之前发生了一些事情。还是... set F="%%F: =%%"
是什么? ?
除非您使用 FOR 循环变量,否则无需在变量的每一端使用 %%。
如果这是一个 FOR 循环,它将如下所示:
SETLOCAL ENABLEDELAYEDEXPANSION
set num=1
:START
IF NOT EXIST "myFolder\at%num%.txt" (GOTO:EOF)
FOR /F "USEBACKQ tokens=*" %%A IN (`TYPE "myFolder\at%num%.txt" ^| FIND /i "string"`) DO (
PAUSE
SET var=%%A
ECHO !var!
PAUSE
SET var=!var: =!
ECHO !var!
PAUSE
SET var=!var:~10,-11!
ECHO !var!
PAUSE
SET /a num=!num!+1
ECHO !num!
PAUSE
)
GOTO:START
检查命令是否正常工作的一个好习惯是,例如 SET,在变量上插入 ECHO,并在每次您认为应该更改变量后插入 PAUSE。这将跟踪变量的更改,以便您可以查看命令是否正确以及是否进行了更改。
关于循环中的变量不起作用,批处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7247716/