循环中的变量不起作用,批处理

标签 variables loops batch-file

这是新脚本,但它仍然不起作用 我得到命令的语法不正确。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/

相关文章:

php - var_dump 报告错误的字符串长度是什么意思?

java - 公共(public)静态变量和私有(private)静态变量之间的区别

c - float 变量重置为1.000

c - 如何修复 scanf? (故障保护)

Java Swing/AWT - 创建滚动 Pane 部分的最佳方法?

c++ - 当特定字符被击中时,如何打破循环?

windows - 将每个文件复制到每个文件夹

java - Maven 构建错误 : mvn. bat 无法识别

windows - Chrome 扩展 - 消息传递到批处理文件

swift - 已经声明的变量显示 'variable used before declaration'