0

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/

File:

@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.
)

Results:

A  NUMBER FOUND : 5300

Expected results:

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.

---edit---

Is this nesting the loop?

@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.
    )
)

Error:

> .\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 ***
********************************************************
aschipfl
  • 33,626
  • 12
  • 54
  • 99
Registered User
  • 255
  • 4
  • 12

1 Answers1

0

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.
    )
)

Result:

> .\anumber2.bat
A NUMBER FOUND : 4100

A NUMBER FOUND : 5300
Registered User
  • 255
  • 4
  • 12