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-ID: 32588

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

Ausgedruckt am: 26.11.2024 um 04:11 Uhr

Biber
Biber 16.05.2006 um 13:32:31 Uhr
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
schulle2
schulle2 16.05.2006 um 13:59:33 Uhr
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!
Biber
Biber 16.05.2006 um 16:01:20 Uhr
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
schulle2
schulle2 17.05.2006 um 12:16:00 Uhr
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
schulle2
schulle2 09.06.2006 um 12:07:14 Uhr
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!