Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Batchscript Hilfe gesucht: Computernamen automatisch remote ändern

Empfohlene Antworten

Veröffentlicht

Hallo Leute,

mir viel gerade echt kein besser Titel ein, sorry.

Ich hoffe Ihr könnt mir ein wenig weiterhelfen, ich stecke irgendwie gerade fest. Btw. ist nicht alles allein mein Code, ist von einigen Codeschnipseln.

Also was ich bisher habe:

Txt-Datei mit vorgegebenen Computernamen und neuen Computernamen.

Inhalt der Txt-Datei:

altercomputername,neuercomputername

altercomputername2,neuercomputername2

Ich hätte es gerne so, dass er erst einen Ping abgibt an den alten Computernamen, ob der PC auch gerade online ist und dann den Computernamen ändert und halt in die Logdatei schreibt. Dann soll er natürlich auch weiter die 2. Zeile aus der txt-Datei abarbeiten und natürlich auch den Computernamen ändern usw.

Wenn der Ping fehl schlägt soll er in die nächste Zeile der Txt-Datei gehen und da weiter machen.

Hier mal mein bisheriger Code:



:: Konfiguration

setlocal

set MachineFile=c:\testdatei.txt

set logfile=c:\Logdatei.txt


:datei

:: Datei auslesen

echo Datei %MachineFile% auslesen ....

for /f "tokens=1,2 delims=," %%a in ('type "%MachineFile%"') do (

set OldName=%%~a

set NewName=%%~b

set passworddc=passwort

set user=domaine\administrator

)

call :ping %OldName% %NewName%


:netdom

echo Computer %OldName% umbenennnen in %NewName% ...

NETDOM RENAMECOMPUTER %OldName% /newname:%NewName% /userd:%user% /passwordd:%passworddc% /usero:%user% /passwordo:%passworddc% /force

IF Errorlevel 1 (

call :Renamefailed %OldName% %NewName%

)

IF Errorlevel 0 (

:: Umbenennung erfolgreich, in Logdatei protokollieren

echo Computer %OldName% erfolgreich in %NewName% umbenannt.

echo %date% %time% umbenennen %OldName% in %NewName% erfolgreich >> %logfile%

exit

)


:ping

:: Warten auf Pingreaktion

echo ping Computer %OldName% ...

ping -n 3 %OldName%

If Errorlevel 1 call :pingfailed %OldName% %NewName%

call :netdom %OldName% %NewName%


:pingfailed


echo Ping fehlgeschlagen ....

echo.

echo %date% %time% Computer %NewName% NICHT erreichbar! >> %logfile%

echo Computer %NewName% NICHT erreichbar!

echo Siehe %logfile%

echo.

echo.

pause

exit


:Renamefailed

echo Umbenennen fehlgeschlagen ....

echo.

echo.

echo %date% %time% umbenennen %OldName% in %NewName% ist fehlgeschlagen! >> %logfile%

echo Computer Umbenennung %OldName% in %NewName% ist fehlgeschlagen!

echo siehe %logfile%

echo.

echo.

pause

exit

Gruß

Danny

Bearbeitet von dannyr21

Hi,

also 1. führt er das Script zwar aus aber nur für die 1. Zeile und dann nicht für die anderen Zeilen. Und, wenn er den Computer anpingt und er nicht erreichbar ist, soll er in die nächste Zeile von der Txt-Datei gehen und da weiter machen und nicht einfach aufhören > das macht er bisher nicht, er wiederholt und wiederholt die 1. Zeile.

Dachte vielleicht einige könnten mal kurz drüberschauen ob das logisch so funktionieren könnte und wenn nicht, wie ich da was dran ändern könnte, dass es meinen Wünschen entspräche.

Danke schon mal.

Ich habe schon im ersten Abschnitt ": Datei" die Variable %OLDNAME% nicht mit "ECHO" ausgeben können... Und die Batch kurzerhand zusammengestrichen:


CLS

@ECHO OFF

TITLE=Rename Comuter



:: Konfiguration

SET USER=Administrator

SET PASSWORD=GEHEIM

SET LOGFILE=Logdatei.txt

SET MACHINEFILE=Testdatei.txt


ECHO.

ECHO Starte Rename Computer...

> %LOGFILE% ECHO %DATE% %TIME% Starte Rename Computer...


FOR /F "Tokens=1,2 Delims=," %%i IN (%MACHINEFILE%) DO (


	ECHO.

	ECHO Ping Computer %%i...

	PING -n 1 %%i | FIND "TTL">NUL

	IF ERRORLEVEL 1 (


		ECHO FEHLER! Computer %%i ist NICHT erreichbar! Siehe %LOGFILE%

		>> %LOGFILE% ECHO.

		>> %LOGFILE% ECHO %DATE% %TIME% Computer %%i ist NICHT erreichbar!


	) ELSE IF ERRORLEVEL 0 (


		ECHO Starte Computer umbenennnen von %%i in %%j...

		>> %LOGFILE% ECHO.

		>> %LOGFILE% ECHO %DATE% %TIME% Computer %%i ist erreichbar.

		>> %LOGFILE% ECHO %DATE% %TIME% Starte Computer umbenennnen von %%i in %%j...


		PING -n 1 127.0.0.1 | FIND "TTL">NUL

		>> %LOGFILE% ECHO NETDOM RENAMECOMPUTER %%i /NEWNAME:%%j /userd:%USER% /passwordd:%PASSWORD% /usero:%USER% /passwordo:%PASSWORD% /force

		IF Errorlevel 1 (


			ECHO.

			ECHO Computer Umbenennung von %%i in %%j ist fehlgeschlagen! Siehe %LOGFILE%

			>> %LOGFILE% ECHO %DATE% %TIME% Umbenennen von %%i in %%j ist fehlgeschlagen!


		) ELSE IF Errorlevel 0 (


			ECHO Computer %%i erfolgreich in %%j umbenannt.

			>> %LOGFILE% ECHO %DATE% %TIME% umbenennen von %%i in %%j erfolgreich.

		)

	)

)


ECHO.

ECHO Batch Ende.

>> %LOGFILE% ECHO.

>> %LOGFILE% ECHO %DATE% %TIME% Ende.


PAUSE

START Notepad %LOGFILE%

EXIT

Du musst noch den 2. PING-Befehl
PING -n 1 127.0.0.1 | FIND "TTL">NUL
und
>> %LOGFILE% ECHO
vor
NETDOM RENAMECOMPUTER %%i /NEWNAME:%%j /userd:%USER% /passwordd:%PASSWORD% /usero:%USER% /passwordo:%PASSWORD% /force

rauslöschen.

Gruss,

tester2k5

Hi,

Vielen Dank für dein Script(Änderungen). Hätte fast geklappt, musste noch was am Code ändern.

Meine Änderung war:

FOR /F "Tokens=1,2 Delims=," %%i IN ('type %MACHINEFILE%') DO (

ohne dieses 'type %MachineFile%' ging es nicht, mit aber schon :) .

Vielen Dank noch mal tester2k5

Bearbeitet von dannyr21

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.