schulle2
Goto Top

IF bei Batch

Hallo allerseits!


Ich bin gerade dabei, einen kleinen Batch Script zu schreiben, der NT User zu vollen Namen auflöst:

ECHO Suche: %1 ... >>C:\Temp\Userfullist.txt
FOR /F "tokens=2 delims==" %%i IN ('GetFullName.exe %1 %XDOMAIN%') DO CALL :AUSGABE %1 "%%i"


GOTO :EOF

:AUSGABE

ECHO %~1 %~2 >>C:\Temp\Userfullist.txt


Das klappt auch schon soweit. Der erstellt mir meine Userfullist und ferdisch.
Nun will ich aber, dass wenn die Ausgabe davon = "" ist (also nt user nicht vorhanden), der username in eine extra Datei geschrieben wird. Wenn der Name nicht aufgelöst wird, wie man oben im Script sieht, %1 ... gespeichert.
Da ich ich mir ich mach mal folghendes:

IF "%~1" == "" ECHO %1 >>C:\Temp\test.txt


Klappt nur leider nicht face-sad
Ich hab keine Ahnung warum! Kann mir jmd helfen?

Content-Key: 32588

Url: https://administrator.de/contentid/32588

Printed on: April 24, 2024 at 07:04 o'clock

Member: Biber
Biber May 16, 2006 at 11:32:31 (UTC)
Goto Top
Moin schulle2,

liegt daran, dass Du in der Liste der beiden Parameter, die an die "Routine" Ausgabe übergibt, nie den ersten Parameter leer haben kannst.
Der CMD-Interpreter fängt ja mit dem ersten gefundenen Parameter an - dieser wird dan der Parameter 1.

Dreh die beiden Parameter um, dann geht das:
ECHO Suche: %1 ... >>C:\Temp\Userfullist.txt
FOR /F "tokens=2 delims==" %%i IN ('GetFullName.exe %1 %XDOMAIN%') DO CALL :AUSGABE "%%i" %1  

GOTO :EOF

:AUSGABE Para 2: ist jetzt der Suchname; Para 1 der aufgelöste Name
IF "%~2" == ""  (   
    ECHO %2 konnte nicht aufgelöst werden! >>C:\Temp\test.txt
) ELSE (
    ECHO %~2 %~1 >>C:\Temp\Userfullist.txt
)
GOTo :eof

Hope That Helps
Biber
Member: schulle2
schulle2 May 16, 2006 at 11:59:33 (UTC)
Goto Top
Hi Biber,

danke erst einmal, aber leider gehts immer noch nicht! Es ist immer noch als ob er einfach den User ingnorieren würde!

So sieht das Ergebnis (Userfullist) aus:

Suche: aaa2xe ...
TEster Test aaa2xe
Suche: aab2xe ...
Suche: aac2xe ...
Anderer Tester aac2xe
Suche: aad2xe ...
Nochein Tester aad2xe


aab2xe ist ein nicht vorhandener User (sollt ja eigentlich in der test.txt stehen)
Die wurde aber nicht erstellt...


So gehts mir jetzt schon die ganze Zeit^^

Hat jemand noch eine Idee? Ich verzweifel hier fast!

Danke!
Member: Biber
Biber May 16, 2006 at 14:01:20 (UTC)
Goto Top
Na ja,
wenn die Rückgabe von GetFullUser.exe im "Fehlerfall", also wenn der Name nicht aufgelöst werden kann, gar kein zweites Token/gar keinen Wert rechts vom Gleichheitszeichen zurückgibt, dann wird auch der ganze Block "call :Ausgabe" gat nicht gerufen.

Dann musst Du es so abfangen:

ECHO Suche: %1 ... >>C:\Temp\Userfullist.txt
FOR /F "tokens=1,2 delims==" %%i IN ('GetFullName.exe %1 %XDOMAIN%') DO CALL :AUSGABE "%%i" "%%j" %1  

GOTO :EOF

:AUSGABE Para 3: ist jetzt der Suchname; Para 2 der aufgelöste Name, para 1 egal
IF "%~3" == ""  (   
    ECHO %2 konnte nicht aufgelöst werden! >>C:\Temp\test.txt
) ELSE (
    ECHO %~3 %~2 >>C:\Temp\Userfullist.txt
)
GOTo :eof
Member: schulle2
schulle2 May 17, 2006 at 10:16:00 (UTC)
Goto Top
Klappt leider immer noch nicht.... face-sad
Ergebnis schaut nun so aus:

Suche: aaa2xe ...
aaa2xe
aaa2xe TEster Test
Suche: aab2xe ...
aab2xe
aab2xe
aab2xe
Suche: aad2xe ...
aad2xe
aad2xe Nochein Tester
Member: schulle2
schulle2 Jun 09, 2006 at 10:07:14 (UTC)
Goto Top
Nach langem hin, her und probieren habe ich es mit Hilfe von Biber doch noch hinbekommen:
FOR /F "delims== tokens=1-2" %%i in ('GetFullname.exe %1 %XDOMAIN%^|find "fullname" ' ) DO @if [%%j]== echo Name %1 konnte nicht aufgelöst werden >>c:\temp\Empty.txt


DANKE!