
84075
26.10.2009
lokales Batch Skript einmalig ausführen
hallo,
habe ein Frage. Ich habe ein Batch Skript das beim ausliefern eines Rechners ausgeführt werden soll aber nur einmalig und vom User selber. Es verbindet einen Netzwerkdrucker mit dem Rechner.
Per Logon Skript auf dem Netlogon Server würde ich es nicht machen da ich so für jeden User ein Startup Skript einrichten müsste. Hatte mir zuerst gedacht das ich es unter Documetns an Settings unter All Users im Startmenü ablegen soll?!?!? Dann sollte das Skript aber nur beim Erststart des Users ausgeführt werden, danach nicht mehr.
habe ein Frage. Ich habe ein Batch Skript das beim ausliefern eines Rechners ausgeführt werden soll aber nur einmalig und vom User selber. Es verbindet einen Netzwerkdrucker mit dem Rechner.
Per Logon Skript auf dem Netlogon Server würde ich es nicht machen da ich so für jeden User ein Startup Skript einrichten müsste. Hatte mir zuerst gedacht das ich es unter Documetns an Settings unter All Users im Startmenü ablegen soll?!?!? Dann sollte das Skript aber nur beim Erststart des Users ausgeführt werden, danach nicht mehr.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 127903
Url: https://administrator.de/forum/lokales-batch-skript-einmalig-ausfuehren-127903.html
Ausgedruckt am: 19.05.2025 um 13:05 Uhr
20 Kommentare
Neuester Kommentar

Servus,
dazu gibt es (wie immer) viele Möglichkeiten.
Einer wäre - das script im Run Once abzulegen.
Ein anderer wäre - ein Flag in einer Datei zu hinterlegen - wenn Flag da - dann nix machen -wenn nicht ausführen.
Das hätte den Vorteil - wird der Netzwerkdrucker geändert / ein zweiter kommt dazu - würde wieder alles automatisch laufen.
btw: Startupscript brauchts beim Netzwerkdrucker nicht. Das "kann" das normale Loginscript.
Und wenn dir das nicht weiterhilft - poste dein Script und wir können dir gezielt weiterhelfen.
Gruß
dazu gibt es (wie immer) viele Möglichkeiten.
Einer wäre - das script im Run Once abzulegen.
Ein anderer wäre - ein Flag in einer Datei zu hinterlegen - wenn Flag da - dann nix machen -wenn nicht ausführen.
Das hätte den Vorteil - wird der Netzwerkdrucker geändert / ein zweiter kommt dazu - würde wieder alles automatisch laufen.
btw: Startupscript brauchts beim Netzwerkdrucker nicht. Das "kann" das normale Loginscript.
Und wenn dir das nicht weiterhilft - poste dein Script und wir können dir gezielt weiterhelfen.
Gruß

Servus,
Wobei Du am besten "Drucker" gegen einen Sinnigen Namen tauschst und \\server\freigabe - eh klar ist.
Gruß
find /i "%username%,Drucker" "\\server\freigabe\drucker.log" && goto end
rundll32 printui.dll,PrintUIEntry /q /in /n \\DRUCKERSERVER\DRUCKER
echo Drucker wird auf %computername% installiert
echo %username%,Drucker>>"\\server\freigabe\drucker.log"
:end
Wobei Du am besten "Drucker" gegen einen Sinnigen Namen tauschst und \\server\freigabe - eh klar ist.
Gruß
Hallo ,
Zeile eins sucht in einer (als vorhanden angenommenen) Log-Datei, ob der User diesen Drucker bereits verbunden hat. Wenn ja, wird das Script beendet.
Zeile vier Trägt eben in diese Log-Datei ein, wenn der Drucker installiert/verbunden wurde. So wird Zeile eins beim nächsten Durchlauf den Drucker finden und nicht erneut versuchen zu verbinden.
Also eigentlich nur der Versuch, das ganze zentral abzuprüfen. Theoretisch wäre es auch möglich, diese Log-Datei lokal anzulegen.
Gruß
Lars
Zeile eins sucht in einer (als vorhanden angenommenen) Log-Datei, ob der User diesen Drucker bereits verbunden hat. Wenn ja, wird das Script beendet.
Zeile vier Trägt eben in diese Log-Datei ein, wenn der Drucker installiert/verbunden wurde. So wird Zeile eins beim nächsten Durchlauf den Drucker finden und nicht erneut versuchen zu verbinden.
Also eigentlich nur der Versuch, das ganze zentral abzuprüfen. Theoretisch wäre es auch möglich, diese Log-Datei lokal anzulegen.
Gruß
Lars
Die andere Variante ist aber eleganter, die Batch kannst Du so dann jederzeit erweitern/umbauen wie Du sie evtl. in der Zukunft brauchst. Den Geplanten Task müsstest Du JEDES MAL NEU anlegen. Umbauen auf deinen Admin-PC sollte kein Problem sein, so lange Du eine Freigabe hast, wo die Benutzer lesen & schreiben dürfen, also z.B.:
Gruß
Larz
find "%username%,Drucker" "\\DeinComputer\Freigabename\drucker.log" && goto end
rundll32 printui.dll,PrintUIEntry /q /in /n \\DRUCKERSERVER\DRUCKER
echo Drucker wird auf %computername% installiert
echo %username%,Drucker>>"\\DeinComputer\Freigabename\drucker.log"
:end
Gruß
Larz

Stop...
lege mal einen x beliebigen Link /textdatei auf den desktop
melde dich ab
melde dich an.
zu 99.9999% ist der "link/textdatei" auch weg?
Ihr habt ein Problem mit den Userprofilen - oder benutzt Mandatory profiles ?
Gruß
lege mal einen x beliebigen Link /textdatei auf den desktop
melde dich ab
melde dich an.
zu 99.9999% ist der "link/textdatei" auch weg?
Ihr habt ein Problem mit den Userprofilen - oder benutzt Mandatory profiles ?
Gruß
Hallo cyancy!
Wenn Du die Steuerdatei so gestaltest:
könnte der Batch dazu so aussehen:
Grüße
bastla
Wenn Du die Steuerdatei so gestaltest:
xyz123,dr123,dr436,dr090
xyz456,dr665,dr432,998
xyz789,dr509,dr421,dr555,dr780
for /f "tokens=1* delims=," %%i in ('findstr /i /b "%username%" "\\DeinComputer\Freigabename\Drucker.csv"') do for %%a in (%%j) do findstr /i "%username%,%%a" "\\DeinComputer\Freigabename\drucker.log">nul || (
rundll32 printui.dll,PrintUIEntry /q /in /n \\DRUCKERSERVER\%%a
echo Drucker %%a wird auf %computername% installiert
echo %username%,%%a >>"\\DeinComputer\Freigabename\drucker.log"
)
bastla
Hallo cyaency!
Mit einem kleinen (vom Batch selbst erzeugten) VBScript könntest Du die Drucker etwa so auflisten und bei Bedarf installieren lassen (der Eintrag in die "drucker.log" ist dann ja eigentlich überflüssig, aber zu Dokumentationszwecken kannst Du ihn trotzdem verwenden - dann aber vielleicht besser noch mit Angabe eines Timestamps):
Grüße
bastla
Mit einem kleinen (vom Batch selbst erzeugten) VBScript könntest Du die Drucker etwa so auflisten und bei Bedarf installieren lassen (der Eintrag in die "drucker.log" ist dann ja eigentlich überflüssig, aber zu Dokumentationszwecken kannst Du ihn trotzdem verwenden - dann aber vielleicht besser noch mit Angabe eines Timestamps):
set L=%temp%\ListPrinters.vbs
>%L% echo Set Printers=WScript.CreateObject("WScript.Network").EnumPrinterConnections:For i=1 To Printers.Count Step 2:WScript.Echo Printers.Item(i):Next
for /f "tokens=1* delims=," %%i in ('findstr /i /b "%username%" "\\DeinComputer\Freigabename\Drucker.csv"') do for %%a in (%%j) do cscript //nologo %L%|findstr /i "%%a">nul || (
rundll32 printui.dll,PrintUIEntry /q /in /n \\DRUCKERSERVER\%%a
echo Drucker %%a wird auf %computername% installiert
echo %date:~-4%-%date:~-7,2%-%date:~-10,2% %time:~,8% %username%,%%a >>"\\DeinComputer\Freigabename\drucker.log"
)
bastla
<OT>
@bastla
Gib doch dem jungen Nachwuchstalent bitte ein paar Minuten, seine letzte gestellte Frage kurz nachhallen zu lassen.
Vielleicht kommt ja gleich noch ein "Hmmm, ich könnte ja einen weiteren Parameter in der CSV-Datei einführen.."
... oder ein "Ich mache mal was Verrücktes und benutze die Forumssuche..."
... oder ein "Dafür sollte ich einen neuen Beitrag aufmachen..."
Nur ein paar Minuten...
Grüße
Biber
P.S. @stweber
Hast du in letzter Zeit mal die Überschrift dieses Beitrags mit der jetzt aktuellen Fragestellung verglichen?
</OT>
@bastla
Gib doch dem jungen Nachwuchstalent bitte ein paar Minuten, seine letzte gestellte Frage kurz nachhallen zu lassen.
Vielleicht kommt ja gleich noch ein "Hmmm, ich könnte ja einen weiteren Parameter in der CSV-Datei einführen.."
... oder ein "Ich mache mal was Verrücktes und benutze die Forumssuche..."
... oder ein "Dafür sollte ich einen neuen Beitrag aufmachen..."
Nur ein paar Minuten...
Grüße
Biber
P.S. @stweber
Hast du in letzter Zeit mal die Überschrift dieses Beitrags mit der jetzt aktuellen Fragestellung verglichen?
</OT>
[OT]
@Biber
... und ich lege sogar noch ein paar Tage drauf.
Grüße
bastla
[/OT]
@Biber
Gib doch dem jungen Nachwuchstalent bitte ein paar Minuten
Dir kann ich ja keinen Wunsch abschlagen ...... und ich lege sogar noch ein paar Tage drauf.
Grüße
bastla
[/OT]