Windows批处理循环未完成 [英] windows batch loop not completing
本文介绍了Windows批处理循环未完成的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
尝试使此批处理文件在列表(list.txt
)中循环,并使用xml.exe
从文件中报告一个编号,该编号可从此处获得:
http://xmlstar.sourceforge.net/
Attempting to have this batch file loop through a list (list.txt
) and report back a number from the file using xml.exe
available here:
http://xmlstar.sourceforge.net/
文件:
@echo off
SET USER_NAME=registereduser
SET PASSWORD=secret
SET LIST=list.txt
SETLOCAL EnableDelayedExpansion EnableExtensions
net use * /del /yes > null
FOR /F %%A in ('TYPE "%LIST%"') do (
NET USE * \\%%A\c$ /user:%USER_NAME% %PASSWORD% > null
SET DATA=\\%%A\c$\directory here\file.xml
)
SET A_NUM=
FOR /F %%I IN ('bin\xml sel -t -v "//Editable[@name='MachineID.SerialNumber']/@default" "%DATA%"') DO (SET A_NUM=%%I)
IF "%A_NUM%" == "" (
ECHO ********************************************************
ECHO *** ERROR : CAN'T CONNECT ***
ECHO ********************************************************
GOTO END
) ELSE (
ECHO A NUMBER FOUND : %A_NUM%
ECHO.
)
结果:
A NUMBER FOUND : 5300
预期结果:
A NUMBER FOUND : 5300
A NUMBER FOUND : 4100
A NUMBER FOUND : 2600
我看到它映射了驱动器,但是它并没有在所有机器上运行脚本.
I see it mapping the drives but it doesn't run the script on all the machines.
-编辑---
这是嵌套循环吗?
@echo off
SET USER_NAME=registereduser
SET PASSWORD=secret
SET LIST=list.txt
SETLOCAL EnableDelayedExpansion EnableExtensions
net use * /del /yes > null
FOR /F %%A in ('TYPE "%LIST%"') do (
NET USE * \\%%A\c$ /user:%USER_NAME% %PASSWORD% > null
SET DATA=\\%%A\c$\directory here\file.xml
SET A_NUM=
FOR /F %%I IN ('bin\xml sel -t -v "//Editable[@name='MachineID.SerialNumber']/@default" "%DATA%"') DO (SET A_NUM=%%I)
IF "%A_NUM%" == "" (
ECHO ********************************************************
ECHO *** ERROR : CAN'T CONNECT ***
ECHO ********************************************************
GOTO END
) ELSE (
ECHO A NUMBER FOUND : %A_NUM%
ECHO.
)
)
错误:
> .\anumber2.bat
failed to load external entity ""
********************************************************
*** ERROR : CAN'T CONNECT ***
********************************************************
The system cannot find the batch label specified - END
failed to load external entity ""
********************************************************
*** ERROR : CAN'T CONNECT ***
********************************************************
推荐答案
在Squashman的帮助下,我有了答案!
With the help of Squashman, I have an answer!
@echo off
SET USER_NAME=registereduser
SET PASSWORD=secret
SET LIST=list.txt
SETLOCAL EnableDelayedExpansion EnableExtensions
net use * /del /yes > null
FOR /F %%A in ('TYPE "%LIST%"') do (
NET USE * \\%%A\c$ /user:%USER_NAME% %PASSWORD% > nul
SET DATA=\\%%A\c$\directory here\file.xml
SET A_NUM=
FOR /F %%I IN ('bin\xml sel -t -v "//Editable[@name='MachineID.SerialNumber']/@default" "!DATA!"') DO (SET A_NUM=%%I)
IF "!A_NUM!" == "" (
ECHO ********************************************************
ECHO *** ERROR : CAN'T CONNECT ***
ECHO ********************************************************
GOTO END
) ELSE (
ECHO A NUMBER FOUND : !A_NUM!
ECHO.
)
)
结果:
> .\anumber2.bat
A NUMBER FOUND : 4100
A NUMBER FOUND : 5300
这篇关于Windows批处理循环未完成的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文