2016-09-29 5 views
0

Der Versuch, diese Batchdatei Schleife durch eine Liste zu haben (list.txt) und eine Nummer aus der Datei mit xml.exe hier berichten: http://xmlstar.sourceforge.net/Windows-Batch-Schleife nicht abgeschlossen

Datei:

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

Ergebnisse :

A NUMBER FOUND : 5300 

Erwartete Ergebnisse:

A NUMBER FOUND : 5300 
A NUMBER FOUND : 4100 
A NUMBER FOUND : 2600 

Ich sehe es die Laufwerke zuordnen, aber es führt nicht das Skript auf allen Maschinen.

--- edit ---

Ist das die Schleife nisten?

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

Fehler:

> .\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 *** 
******************************************************** 
+0

Sie müssen Nest Ihre FOR Befehle. – Squashman

+0

Editierte die Post. Sieht so aus, als wäre es ein bisschen weiter, aber worüber beschwert es sich jetzt? –

+0

Sie befinden sich in einem Codeblock, daher müssen Sie die verzögerte Erweiterung für alle Umgebungsvariablen verwenden. Beispiel:% DATA% zu! DATA! – Squashman

Antwort

0

Mit Hilfe von Squashman, habe ich eine Antwort!

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

Ergebnis:

> .\anumber2.bat 
A NUMBER FOUND : 4100 

A NUMBER FOUND : 5300 
Verwandte Themen