If statement 批处理语法错误
我正在尝试编写一个批处理程序,将配置文件文件夹的名称复制到一个txt文件中,然后获取每一行(配置文件)并用它查询广告。我似乎有两个问题: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
@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 ...