If statement 批处理语法错误

If statement 批处理语法错误,if-statement,batch-file,for-loop,If Statement,Batch File,For Loop,我正在尝试编写一个批处理程序,将配置文件文件夹的名称复制到一个txt文件中,然后获取每一行(配置文件)并用它查询广告。我似乎有两个问题: 它说我写for循环的方式有语法错误 如果我分解它进行调试,循环似乎只是反复设置变量,然后仅使用最终值来执行下标中的命令 @echo关闭 @setlocal enabledelayedexpansion pushd“c:\documents and settings” mkdir c:\pulls 复制\\mint\testfolder\forfiles.exe

我正在尝试编写一个批处理程序,将配置文件文件夹的名称复制到一个txt文件中,然后获取每一行(配置文件)并用它查询广告。我似乎有两个问题:

  • 它说我写for循环的方式有语法错误
  • 如果我分解它进行调试,循环似乎只是反复设置变量,然后仅使用最终值来执行下标中的命令
  • @echo关闭
    @setlocal enabledelayedexpansion
    pushd“c:\documents and settings”
    mkdir c:\pulls
    复制\\mint\testfolder\forfiles.exe c:\\
    复制\\mint\testfolder\psexec.exe c:\pulls\
    rem call\\mint\testfolder\copy.bat c:\pulls\
    设置查询ID=
    设置支票ID=
    rem查找过去18个月内登录的所有配置文件
    c:\pulls\forfiles.exe/p“c:\documents and settings\”/d-540/c“cmd/c如果@ISdir==true deltree@ISdir”
    目录/b>“c:\documents and settings\profiles.txt”
    %queryid%>“c:\documents and settings\tmp.txt”
    rem活动目录查询
    :adquery
    对于(“c:\documents and settings\profiles.txt”)中的/f“tokens=*”%%n,请执行以下操作:(
    设置查询ID=%%n
    电话:sub
    )
    后藤:结束
    :sub
    c:\pulls\psexec.exe\\computer-u domain\user-p password dsquery user-name%queryid%>“c:\documents and settings\tmp.txt”
    set/p checkid=<“c:\documents and settings\tmp.txt”
    del“c:\documents and settings\tmp.txt”
    ::检查变量是否为空字符串
    如果[!%checkid%==!]转到:进程1
    如果[%checkid%=]%queryid%>>c:\documents and settings\final.txt
    后藤:eof
    :进程1
    c:\pulls\psexec.exe\\computer-u domain\user-p password dsquery user-name%queryid%-desc*termed*>“c:\documents and settings\tmp.txt”
    set/p checkid=<“c:\documents and settings\tmp.txt”
    del“c:\documents and settings\tmp.txt”
    ::检查变量是否为空字符串
    如果[!%checkid%==!]转到:修改
    如果[%checkid%=]转到:进程2
    后藤:eof
    :进程2
    c:\pulls\psexec.exe\\computer-u domain\user-p password dsquery user-name%queryid%-已禁用>“c:\documents and settings\tmp.txt”
    set/p checkid=<“c:\documents and settings\tmp.txt”
    del“c:\documents and settings\tmp.txt”
    ::检查变量是否为空字符串
    如果[!%checkid%==!]转到:修改
    后藤:eof
    :修订
    %检查ID%>>“c:\documents and settings\final.txt”
    后藤:eof
    :结束
    notepad.exe“c:\documents and settings\final.txt”
    删除c:\s/y
    del“c:\documents and settings\profiles.txt”
    del“c:\documents and settings\final.txt”
    rem复制选定的配置文件
    rem c:\pulls\copy.bat
    
    我还没有跟踪您的整个逻辑,看看您是否还有其他问题。但是我已经确定了FOR/F循环的问题

    您正试图读取一个文件,但IN()子句是双引号,因此它被解释为字符串而不是文件名。(键入
    以获取/?
    以获取有关FOR命令的帮助)。您希望使用双引号,因为您的路径包含空格,但您需要将其解释为文件名-这就是USEBACKQ选项的用途

    for /f  "usebackq tokens=*" %%n IN ("c:\documents and settings\profiles.txt") do ...
    
    for /f  "usebackq tokens=*" %%n IN ("c:\documents and settings\profiles.txt") do ...