Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Einrichtung eines Users für eine Software per Batch

Frage Entwicklung Batch & Shell

Mitglied: erde0815

erde0815 (Level 1) - Jetzt verbinden

13.10.2008, aktualisiert 31.10.2008, 3116 Aufrufe, 5 Kommentare

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
Mitglied: 51705
13.10.2008 um 21:27 Uhr
Hallo Erde,

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
Bitte warten ..
Mitglied: bastla
13.10.2008 um 21:47 Uhr
Hallo erde0815!

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 zwangloses
01.
set vorname= 
02.
set nachname=
recht gut verhindern lässt.

Ob dann überhaupt etwas eingegeben wurde, kannst Du zB mit
01.
if not defined vorname echo Kein Vorname eingegeben! & goto :nochmal
überprüfen und behandeln.

REM [todo] Nachname darf nicht laenger als 8 Zeichen sein sonst abschneiden, aber wie?
01.
set "nachname=%nachname:~,8%
IF /I "%X%"=="J" goto :nochmal
Etwas sicherer wäre:
01.
IF /I "%X:~,1%"=="J" goto :nochmal
In Kombination mit dem Abbruch per Eingabe "255" etwa so:
01.
IF /I "%X:~,1%"=="J" (goto :nochmal) ELSE (IF "%X%"=="255" goto :Ende)
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:
IF /I "%X%">="0" ECHO "Ein Fehler ist aufgetreten die Batchausfuehrung wird beendet. "
ließe sich zwar so schreiben:
01.
IF %X% gtr 0 ECHO "Ein Fehler ist aufgetreten, die Batchausfuehrung wird beendet. :-("
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 ...

NET R: /DELETE >Nul
sollte besser lauten:
01.
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
01.
ECHO Filter=Microsoft Access (*.$$$)^|*.$$$^|Alle Dateien (*.*)^|*.*^| >>H:\Verzeichnis1\Verzeichnis2\Verzeichnis3\%nachname%\name.INI
Grüße
bastla

P.S.: Sieh Dir bitte einmal diese Formatierungsmöglichkeit an ...
Bitte warten ..
Mitglied: erde0815
14.10.2008 um 09:36 Uhr
vielen Dank bastla, deine Tips haben für mich etwas Licht ins dunkle gebracht, ich denke damit komme ich weiter, wenn ich fertig bin kann ich bei interesse gern mein Script hier posten.
Bitte warten ..
Mitglied: erde0815
31.10.2008 um 18:20 Uhr
So ich bin einen riesen Satz weitergekommen mit meiner Batch und habe schmerzlich bemerkt, dass Leerzeichen in alten INI's eine Menge unheil anrichten können und der Fehler schwer zu jagen ist, zumindest beim ersten Mal.
Auch konnte ich mit Freude das "Feature" der verzögerten Variablenbefüllung bewundern, das es neu unter XP gibt.

Aber alle Hürden zum Trotz läuft es in der Grundversion. :D
Jetzt würde ich es noch gern etwas pimpen, dafür bräuchte ich etwas Rat bzw. Kritik.
1) Ich möchte gern in meiner Fehlerausgabe am Ende des Anlegungsprozesses entsprechendes Anmerken, wenn das Aufnehmen des Users in die Gruppe nicht hingehauen hatt. Ich verwende den Befehlt

NET GROUP Gruppenname %vorname%.%nachname% /ADD /DOMAIN 2>Nul>Nul

in meiner Batch. Wie sind die Errorlevel dafür und werden diese auch zuverlässig gesetzt? Ich möchte das gern in eine Variable umleiten und am Ende auf Grund der Variable eine Ausgabe machen.

2) Ich würde gern meine Erzeugten Shortcuts *stolzIst* dem Anwender auf den Desktop kopieren. Dafür benutze ich eine Tastatureingabe mit SET /P für den Rechnernamen außerhalb jeglicher Schleifen man lernt ja dazu.
Dann würde ich gern nen Verbindungstest machen, ich dachte an ping, und wenn der 10x sauber durchgeht möchte ich dem User mit xcopy den Kram auf den Desktop jauchen. An der Stelle mit dem Verbindungstest komme ich nicht weiter. Hat da jemand ne gute Idee?

SET /P rechner= Bitte den Rechnernamen eingeben:
ping /n 10 %rechner% 2>NUL>NUL && goto:cpShortc

Irgendwie ist da aber noch der Wurm drin weil mir nicht ganz einleuchtet wie ich das da mit dem Errorcode machen muß. Ach ja das Label _cpShortc kopiert den Shortcut.

Zum Shortcut erzeugen habe ich Shortcut [Version 1.11] von OptimumX.com/ entdeckt ich finde es ist wesentlich zuverlässiger als sein alter Vorgänger aus dem M$ Ressourcekit.

Schönes We und schönes Helloween euch allen
Bitte warten ..
Mitglied: bastla
31.10.2008 um 18:41 Uhr
Hallo erde0815!

Da wir in diesem Thread ja ziemlich unter uns sind (und vermutlich auch bleiben werden), böte es sich an, Deine Fragen in einen neuen Beitrag zu setzen ...

Grüße
bastla
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Batch & Shell
Batch-Variable nach Stichworten aus TXT Datei durchsuchen (3)

Frage von Markus5579 zum Thema Batch & Shell ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

LAN, WAN, Wireless
Software für Backup oder Datensynchronisation über WAN gesucht (4)

Frage von Rubiks zum Thema LAN, WAN, Wireless ...

Batch & Shell
Dateinamen nach Zeichnen abschneiden - Batch-Shell (9)

Frage von cberndt zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (27)

Frage von patz223 zum Thema Windows Userverwaltung ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (20)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...