larz
Goto Top

PCs umbenennen mit For-Schleife und netdom

Hallo zusammen,

ich habe folgenden Batch-Schnipsel:

:Start
@ECHO =======================================================
@ECHO Dateiname der PC-Liste angeben:
set /p Datei=
@ECHO.
@ECHO Datei %Datei% auslesen ....
For /F "tokens=1,2* " %%i in (%Datei%) do call :DoAction %%i %%j  
goto ActionEnd

:DoAction
netdom renamecomputer %1 /newname:%2 /userd:Domäne\Admin /PasswordD:* /force /reboot:10
@ECHO =======================================================

:ActionEnd
GOTO Abfrage_nochmal

:Abfrage_nochmal
@ECHO M”chten Sie weitere PCs umbenennen (J/N)?
set /p Entscheidung=
if '%Entscheidung%' == 'j' goto Start  

Es soll so funktionieren:

1. Eine Datei mit Inhalt alte und neue PC-Namen wird eingelesen
2. Mittels netdom.exe wird der erste PC umbenannt, dann der zweitem, dann der dritte...
3. Danach wird abgefragt, ob eine weitere Liste eingelesen werden soll

Die Datei PC-Liste.txt sieht so auf:

PC1 PC1-neu
PC2 PC2-neu
PC3 PC3-neu
...

Leider klappt das immer nur beim ersten Durchlauf. Was mache ich hier falsch???

Danke für euer Feedback

Gruß
Larz

Content-Key: 125540

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

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

Member: bastla
bastla Sep 22, 2009 at 15:02:27 (UTC)
Goto Top
Hallo Larz!

Versuch es mit einer Zeile 13
goto :eof
oder verzichte auf "call" und schreibe die Schleife etwa so:
For /F "tokens=1*" %%i in (%Datei%) do (  
    netdom renamecomputer %%i /newname:%%j /userd:Domäne\Admin /PasswordD:* /force /reboot:10
@ECHO =======================================================
)
Grüße
bastla
Mitglied: 81825
81825 Sep 22, 2009 at 15:09:54 (UTC)
Goto Top
Hallo,

etwas Senf habe ich auch noch beizusteuern: face-wink

set /P verträgt auch einen zusätzlichen Text, du kannst dir also die Echo-Zeile vorher sparen:
set /p Datei=Dateiname der PC-Liste angeben   
oder
set /p Entscheidung=M”chten Sie weitere PCs umbenennen (J/N)? 
Member: Larz
Larz Sep 24, 2009 at 06:34:25 (UTC)
Goto Top
Danke für die Info, habe ich noch nicht gewusst...

Gruß
Larz
Member: Larz
Larz Sep 24, 2009 at 06:36:34 (UTC)
Goto Top
Servus bastla,

Du bist schon oft die Lösung meiner (Batch-)Probleme gewesen, wie jetzt auch hier face-wink
Was mach denn :eof? Kann dasübersetzt werden mit "End-Of-Function"? "End-Of-File" ist es ja eigentlich nicht...

Gruß
Larz
Member: bastla
bastla Sep 24, 2009 at 12:27:27 (UTC)
Goto Top
Hallo Larz!
Was mach denn :eof? Kann dasübersetzt werden mit "End-Of-Function"? "End-Of-File" ist es ja eigentlich nicht...
Es wird durch die Anweisung "goto :eof" ein Sprung an das Ende der Datei (= des Batches) simuliert - wird der Befehl im "Hauptprogramm" (wie in diesem Fall) verwendet, beendet er den Batch; setzt Du ihn an das Ende eines per "call" aufgerufenen Unterprogrammes, wird damit dieser "Unter-Batch" ebenfalls beendet und es geht im "Hauptprogramm" mit der nächsten Anweisung weiter - insofern entspricht er dann einem "Return" eines klassischen Basic ...

Grüße
bastla