Einrichtung eines Users für eine Software per Batch
Es sollen Daten kopiert, verändert werden ein paar Netzlaufwerke geused aber irgendwie steckt der Wurm drin.
Hi Folkz,
ich hoffe ihr könnt mir helfen ich wollte für mich und meine Kollegen als Arbeitserleichterung eine Dosbatch schreiben um eine im Hause gebräuchliche Software für den User einzurichten. Die Software kommt gefühlt aus dem Jahre Anno Domini und ist eine 16bit Anwendung.
Mein Script sieht wie folgt aus, wenn mir jemand nen Tip geben könnte was ich falsch mache wäre ich sehr dankbar.
Ich gehe von folgenden Gegebenheiten aus:
REM * 1) Programm-Daten liegen unter \\Servername\Ver\zeich\nis\zum\programm\Nachname
REM * 2) Programm-Daten kopieren von \\Servername\Ver\zeich\nis\zum\programm\default
REM * 3) Der Benutzer muss im Active Directory bereits exsistieren!
REM * 4) Der Scriptstarter ist ein Admin
REM * 5) Auf dem Netzlaufwerk H:\ muss als ein spezielles share aus dem login geused sein!
REM * 6) Der Laufwerksbuchstabe R:\ darf nicht in Verwendung sein.
:nochmal
cls
ECHO.
ECHO ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
ECHO º Begruessungs bla bla mit Scriptfunktion º
ECHO ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
ECHO.
ECHO.
ECHO Der einzugebende Benutzer muss im AD bereits angelegt sein.
ECHO.
SET /P vorname= Bitte den Vornamen eingeben:
ECHO.
SET /P nachname= Bitte den Nachnamen eingeben:
ECHO.
ECHO Sind die Eingaben so richtig?
ECHO -----------------------------
REM bei fehlender Eingabe halten die Variablen den Wert der Ausführung vorher, lol.
ECHO Vorname '%vorname%' ohne ''
ECHO.
ECHO Nachname '%nachname%' ohne ''
REM [todo] Nachname darf nicht laenger als 8 Zeichen sein sonst abschneiden, aber wie?
Rem ==================================================================================
ECHO.
ECHO Eingaben korregieren?
REM Hier habe ich mal die alte CHOICE-Funktion nachgebaut.
REM ------------------------------------------------------
SET /P X= [J]a oder [N]ein?
IF /I "%X%"=="J" goto :nochmal
ELSE IF /I "%X%"=="255" goto:EOF
@echo Off
cls
REM Datenkopieren
REM -------------
cd H:\Verzeichnisse1\Verzeichnisse2\Verzeichnisse3
NET GROUP gruppenname domäne\%vorname%.%nachname% /add
REM funktioniert nicht richtig
REM ==========================
mkdir H:\Verzeichnisse1\Verzeichnisse2\Verzeichnisse3\%nachname%
ECHO.
ECHO.
ECHO ... kopiere Dateien, einen Moment bitte ...
xcopy /E /C /H H:\Verzeichnisse1\Verzeichnisse2\Verzeichnisse3\default H:\Verzeichnisse1\Verzeichnisse2\Verzeichnisse3\%nachname%\ >Nul
IF EXIST H:\Verzeichnisse1\Verzeichnisse2\Verzeichnisse3\%nachname%\ (
IF EXIST H:\Verzeichnisse1\Verzeichnisse2\Verzeichnisse3\%nachname%\name~1 (
IF EXIST H:\Verzeichnisse1\Verzeichnisse2\Verzeichnisse3\%nachname%\name~2 (
ECHO Kopieren des Benutzerverzeichnises auf H: erfolgreich. :-]
ECHO.
)
)
)
REM Shortcuts anpassen
REM ------------------
NET R: /DELETE >Nul
NET USE R: \\server\NETLOGON\usw\usw\ /user:admin passwort /persistent:no >Nul
SET n=0
R:\SHORTCUT.EXE -c H:\Verzeichnisse1\Verzeichnisse2\Verzeichnisse3\%nachname%\name~1\FEHLER~1.LNK -t H:\Verzeichnisse1\Verzeichnisse2\Verzeichnisse3\%nachname%\ZZERROR.HLP -d H:\Verzeichnisse1\Verzeichnisse2\Verzeichnisse3\%nachname%\ -i H:\Verzeichnisse1\Verzeichnisse2\Verzeichnisse3\%nachname%\HILFE1.ICO
IF EXIST H:\Verzeichnisse1\Verzeichnisse2\Verzeichnisse3\%nachname%\name~1\FEHLER~1.LNK (
ECHO "Verknuepfung Fehler Hilfe wurde erfolgreich angelegt und bearbeitet. :-]"
SET /a n=%n%+1
)
REM 3 weitere Shortcuts werden auf diese weise bearbeitet.
REM ------------------------------------------------------
NET R: /DELETE >Nul
ECHO.
ECHO Es wurden %n% von 4 Verknuepfungen bearbeitet und angelegt.
ECHO.
REM Verknuepfungen zum Userrechner kopieren (?)
REM -------------------------------------------
ECHO.
ECHO "Soll der Ordner mit den Verknuepfungen gleich auf den Desktop"
ECHO "des Anwender-PC kopiert werden?"
ECHO.
ECHO.
SET /P Z= [J]a oder [N]ein?
IF /I "%Z%"=="J" (
ECHO.
SET /P rechner= Bitte den Rechnernamen eingeben:
ECHO.
NET USE R: \\%rechner%\c$\DOKUME~1\%vorname%.%nachname%\Desktop /user:admin passwort /persistent:no >Nul
xcopy /E /C /H H:\Verzeichnis1\Verzeichnis2\Verzeichnis3\%nachname%\name~1\ R:\ >Nul
IF EXIST R:\name~1\ (
IF EXIST R:\name~1\FEHLER~1.LNK (
IF EXIST R:\name~1\test.LNK (
IF EXIST R:\name~1\HILFEZ~1.LNK (
IF EXIST R:\name~1\test2.LNK (
ECHO.
ECHO "Alle Dateien wurden erfolgreich zum Anwender-PC kopiert.
"
ECHO.
)
)
)
)
)
ELSE (
ECHO.
ECHO "Die Dateien konnten nicht zum Anwender-PC kopiert werden.
"
ECHO "mögliche Fehlerursachen: (1) Der Rechner ist nicht an oder (2) der Anwender war dort noch nicht angemeldet."
ECHO.
)
NET R: /DELETE >Nul
)
REM Dann moechte ich eine Datei schreiben, jedoch bricht dies bei folgender Zeile ab und
REM ich weiß nicht was und wie ich es escapen soll.
REM -------------------------------------------------------------------------------------
ECHO Filter=Microsoft Access (*.$$$)|*.$$$|Alle Dateien (*.*)|*.*| >>H:\Verzeichnis1\Verzeichnis2\Verzeichnis3\%nachname%\name.INI
REM wenn ich die Zeile auskommentiere laufen alle Zeilen zum Dateischreiben durch.
REM ------------------------------------------------------------------------------
IF EXIST H:\Verzeichnis1\Verzeichnis2\Verzeichnis3\%nachname%\name.INI (
ECHO.
ECHO "name.INI wurde erfolgreich angelegt.
"
ECHO.
)
ELSE (
ECHO.
ECHO "name.INI wurde konnte nicht angelegt werden.
"
ECHO.
)
:EOF
REM Ausgabe
REM =======
IF /I "%X%">="0" ECHO "Ein Fehler ist aufgetreten die Batchausfuehrung wird beendet.
"
Ich hoffe ich konnte meine Probleme mit den Kommentaren verdeutlichen und bitte um Verständnis, dass ich die konkreten Dateinamen und Benutzer und Passwörter entfremdet habe. Seltsamerweise scheine ich ein generelles Problem mit Net Use und Net delete zu haben sowie die Net Group sache obwohl ich dermaßen viele Anleitungen gewälzt habe. Was Dosbatches angeht bin ich noch sehr am Anfang
Danke fürs Lesen
Gruß Erde
Hi Folkz,
ich hoffe ihr könnt mir helfen ich wollte für mich und meine Kollegen als Arbeitserleichterung eine Dosbatch schreiben um eine im Hause gebräuchliche Software für den User einzurichten. Die Software kommt gefühlt aus dem Jahre Anno Domini und ist eine 16bit Anwendung.
Mein Script sieht wie folgt aus, wenn mir jemand nen Tip geben könnte was ich falsch mache wäre ich sehr dankbar.
Ich gehe von folgenden Gegebenheiten aus:
REM * 1) Programm-Daten liegen unter \\Servername\Ver\zeich\nis\zum\programm\Nachname
REM * 2) Programm-Daten kopieren von \\Servername\Ver\zeich\nis\zum\programm\default
REM * 3) Der Benutzer muss im Active Directory bereits exsistieren!
REM * 4) Der Scriptstarter ist ein Admin
REM * 5) Auf dem Netzlaufwerk H:\ muss als ein spezielles share aus dem login geused sein!
REM * 6) Der Laufwerksbuchstabe R:\ darf nicht in Verwendung sein.
:nochmal
cls
ECHO.
ECHO ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
ECHO º Begruessungs bla bla mit Scriptfunktion º
ECHO ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
ECHO.
ECHO.
ECHO Der einzugebende Benutzer muss im AD bereits angelegt sein.
ECHO.
SET /P vorname= Bitte den Vornamen eingeben:
ECHO.
SET /P nachname= Bitte den Nachnamen eingeben:
ECHO.
ECHO Sind die Eingaben so richtig?
ECHO -----------------------------
REM bei fehlender Eingabe halten die Variablen den Wert der Ausführung vorher, lol.
ECHO Vorname '%vorname%' ohne ''
ECHO.
ECHO Nachname '%nachname%' ohne ''
REM [todo] Nachname darf nicht laenger als 8 Zeichen sein sonst abschneiden, aber wie?
Rem ==================================================================================
ECHO.
ECHO Eingaben korregieren?
REM Hier habe ich mal die alte CHOICE-Funktion nachgebaut.
REM ------------------------------------------------------
SET /P X= [J]a oder [N]ein?
IF /I "%X%"=="J" goto :nochmal
ELSE IF /I "%X%"=="255" goto:EOF
@echo Off
cls
REM Datenkopieren
REM -------------
cd H:\Verzeichnisse1\Verzeichnisse2\Verzeichnisse3
NET GROUP gruppenname domäne\%vorname%.%nachname% /add
REM funktioniert nicht richtig
REM ==========================
mkdir H:\Verzeichnisse1\Verzeichnisse2\Verzeichnisse3\%nachname%
ECHO.
ECHO.
ECHO ... kopiere Dateien, einen Moment bitte ...
xcopy /E /C /H H:\Verzeichnisse1\Verzeichnisse2\Verzeichnisse3\default H:\Verzeichnisse1\Verzeichnisse2\Verzeichnisse3\%nachname%\ >Nul
IF EXIST H:\Verzeichnisse1\Verzeichnisse2\Verzeichnisse3\%nachname%\ (
IF EXIST H:\Verzeichnisse1\Verzeichnisse2\Verzeichnisse3\%nachname%\name~1 (
IF EXIST H:\Verzeichnisse1\Verzeichnisse2\Verzeichnisse3\%nachname%\name~2 (
ECHO Kopieren des Benutzerverzeichnises auf H: erfolgreich. :-]
ECHO.
)
)
)
REM Shortcuts anpassen
REM ------------------
NET R: /DELETE >Nul
NET USE R: \\server\NETLOGON\usw\usw\ /user:admin passwort /persistent:no >Nul
SET n=0
R:\SHORTCUT.EXE -c H:\Verzeichnisse1\Verzeichnisse2\Verzeichnisse3\%nachname%\name~1\FEHLER~1.LNK -t H:\Verzeichnisse1\Verzeichnisse2\Verzeichnisse3\%nachname%\ZZERROR.HLP -d H:\Verzeichnisse1\Verzeichnisse2\Verzeichnisse3\%nachname%\ -i H:\Verzeichnisse1\Verzeichnisse2\Verzeichnisse3\%nachname%\HILFE1.ICO
IF EXIST H:\Verzeichnisse1\Verzeichnisse2\Verzeichnisse3\%nachname%\name~1\FEHLER~1.LNK (
ECHO "Verknuepfung Fehler Hilfe wurde erfolgreich angelegt und bearbeitet. :-]"
SET /a n=%n%+1
)
REM 3 weitere Shortcuts werden auf diese weise bearbeitet.
REM ------------------------------------------------------
NET R: /DELETE >Nul
ECHO.
ECHO Es wurden %n% von 4 Verknuepfungen bearbeitet und angelegt.
ECHO.
REM Verknuepfungen zum Userrechner kopieren (?)
REM -------------------------------------------
ECHO.
ECHO "Soll der Ordner mit den Verknuepfungen gleich auf den Desktop"
ECHO "des Anwender-PC kopiert werden?"
ECHO.
ECHO.
SET /P Z= [J]a oder [N]ein?
IF /I "%Z%"=="J" (
ECHO.
SET /P rechner= Bitte den Rechnernamen eingeben:
ECHO.
NET USE R: \\%rechner%\c$\DOKUME~1\%vorname%.%nachname%\Desktop /user:admin passwort /persistent:no >Nul
xcopy /E /C /H H:\Verzeichnis1\Verzeichnis2\Verzeichnis3\%nachname%\name~1\ R:\ >Nul
IF EXIST R:\name~1\ (
IF EXIST R:\name~1\FEHLER~1.LNK (
IF EXIST R:\name~1\test.LNK (
IF EXIST R:\name~1\HILFEZ~1.LNK (
IF EXIST R:\name~1\test2.LNK (
ECHO.
ECHO "Alle Dateien wurden erfolgreich zum Anwender-PC kopiert.
ECHO.
)
)
)
)
)
ELSE (
ECHO.
ECHO "Die Dateien konnten nicht zum Anwender-PC kopiert werden.
ECHO "mögliche Fehlerursachen: (1) Der Rechner ist nicht an oder (2) der Anwender war dort noch nicht angemeldet."
ECHO.
)
NET R: /DELETE >Nul
)
REM Dann moechte ich eine Datei schreiben, jedoch bricht dies bei folgender Zeile ab und
REM ich weiß nicht was und wie ich es escapen soll.
REM -------------------------------------------------------------------------------------
ECHO Filter=Microsoft Access (*.$$$)|*.$$$|Alle Dateien (*.*)|*.*| >>H:\Verzeichnis1\Verzeichnis2\Verzeichnis3\%nachname%\name.INI
REM wenn ich die Zeile auskommentiere laufen alle Zeilen zum Dateischreiben durch.
REM ------------------------------------------------------------------------------
IF EXIST H:\Verzeichnis1\Verzeichnis2\Verzeichnis3\%nachname%\name.INI (
ECHO.
ECHO "name.INI wurde erfolgreich angelegt.
ECHO.
)
ELSE (
ECHO.
ECHO "name.INI wurde konnte nicht angelegt werden.
ECHO.
)
:EOF
REM Ausgabe
REM =======
IF /I "%X%">="0" ECHO "Ein Fehler ist aufgetreten die Batchausfuehrung wird beendet.
Ich hoffe ich konnte meine Probleme mit den Kommentaren verdeutlichen und bitte um Verständnis, dass ich die konkreten Dateinamen und Benutzer und Passwörter entfremdet habe. Seltsamerweise scheine ich ein generelles Problem mit Net Use und Net delete zu haben sowie die Net Group sache obwohl ich dermaßen viele Anleitungen gewälzt habe. Was Dosbatches angeht bin ich noch sehr am Anfang
Danke fürs Lesen
Gruß Erde
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 99167
Url: https://administrator.de/forum/einrichtung-eines-users-fuer-eine-software-per-batch-99167.html
Ausgedruckt am: 22.05.2025 um 07:05 Uhr
5 Kommentare
Neuester Kommentar

Hallo Erde,
an der Stelle:
hab ich aufgehört zu lesen, was meinst du damit?
Grüße, Steffen
an der Stelle:
Auf dem Netzlaufwerk H:\ muss als ein spezielles share aus dem login geused sein!
hab ich aufgehört zu lesen, was meinst du damit?
Grüße, Steffen
Hallo erde0815!
Vorschläge zu einigen Details (unter der Annahme, dass es auch ein CMD-Batch sein darf):
recht gut verhindern lässt.
Ob dann überhaupt etwas eingegeben wurde, kannst Du zB mit
überprüfen und behandeln.
In Kombination mit dem Abbruch per Eingabe "255" etwa so:
Das Sprungziel ":eof" steht in Batch generell für "Ende" (des Batches oder eines per "call" aufgerufenen internen Unterprogrammes), auch wenn eine entsprechende Sprungmarke nicht existiert, und sollte daher hier durch zB ":Ende" ersetzt werden.
Gleich zur entsprechenden Stelle:
allerdings wird die Variable "X" ja nirgendwo auf den Wert 0 gesetzt, sodass hier immer ein Fehler gemeldet würde - insofern solltest Du das nochmals überdenken ...
Grüße
bastla
P.S.: Sieh Dir bitte einmal an ...
Vorschläge zu einigen Details (unter der Annahme, dass es auch ein CMD-Batch sein darf):
REM bei fehlender Eingabe halten die Variablen den Wert der Ausführung vorher, lol.
... was sich durch ein vorangestelltes zwanglosesset vorname=
set nachname=
Ob dann überhaupt etwas eingegeben wurde, kannst Du zB mit
if not defined vorname echo Kein Vorname eingegeben! & goto :nochmal
REM [todo] Nachname darf nicht laenger als 8 Zeichen sein sonst abschneiden, aber wie?
set "nachname=%nachname:~,8%
IF /I "%X%"=="J" goto :nochmal
Etwas sicherer wäre:IF /I "%X:~,1%"=="J" goto :nochmal
IF /I "%X:~,1%"=="J" (goto :nochmal) ELSE (IF "%X%"=="255" goto :Ende)
Gleich zur entsprechenden Stelle:
IF /I "%X%">="0" ECHO "Ein Fehler ist aufgetreten die Batchausfuehrung wird beendet.
"
ließe sich zwar so schreiben:IF %X% gtr 0 ECHO "Ein Fehler ist aufgetreten, die Batchausfuehrung wird beendet. :-("
NET R: /DELETE >Nul
sollte besser lauten:NET USE R: /DELETE >NUL
REM ich weiß nicht was und wie ich es escapen soll.
ECHO Filter=Microsoft Access (*.$$$)|*.$$$|Alle Dateien (*.*)|*.*| >>H:\Verzeichnis1\Verzeichnis2\Verzeichnis3\%nachname%\name.INI
ECHO Filter=Microsoft Access (*.$$$)|*.$$$|Alle Dateien (*.*)|*.*| >>H:\Verzeichnis1\Verzeichnis2\Verzeichnis3\%nachname%\name.INI
ECHO Filter=Microsoft Access (*.$$$)^|*.$$$^|Alle Dateien (*.*)^|*.*^| >>H:\Verzeichnis1\Verzeichnis2\Verzeichnis3\%nachname%\name.INI
bastla
P.S.: Sieh Dir bitte einmal an ...