marcel1989
Goto Top

Batch File zum Auslesen einer Datei

Hallo,
Ich scheibe momentan ein Anmeldescript als batch mit dem Aufruf von VBS dateien.

Hierfür haben wir bereits gruppen im AD die für die Drucker zuständig sind.
wenn ich allerdings mein Script unter windows 8.1 sowie 10 ausführe läuft es sauber durch. nur bei windows XP bekomme ich Probleme. Da er bei folgender Formel das falsche ausführt.

for /f %%i in (%file2%) do (
Start /wait \\Server\netlogon\D\%%i.vbs

Ich lese vorher die Gruppen aus und schreibe sie in ein Txt-File und mit o.g. Formel lese ich die Textdatei aus.
Die Fehlermeldung unter windows XP ist:

\\Server\netlogon\D\C:\Dokumente.vbs
Der angegebene Pfad ist nicht vorhanden.

Ich habe nachgesehen ob die Textdatei auch wirklich geschrieben wird und ob der richtige Inhalt vorhanden ist und dies ist der fall.

Nun versteh ich nicht woher her "C:\Dokumente" herbekommt?
ich versteh nicht wieso es unter 8.1 und 10 läuft und XP solche probleme macht.

Danke

Marcel

Content-ID: 286046

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

Ausgedruckt am: 26.11.2024 um 11:11 Uhr

emeriks
emeriks 19.10.2015 um 16:08:05 Uhr
Goto Top
Hi,
und wir wissen nicht, was in %file2% steht und wie diese Variable erzeugt wird.
Wenn Du das noch posten würdest ...

E.
Marcel1989
Marcel1989 19.10.2015 aktualisiert um 16:21:23 Uhr
Goto Top
In %file2% stehen die Gruppennamen. Also nicht besonderes die hab ich vorher mit
net user /domain %username% | findstr "PRT_"
ausgelesen und bearbeiten lassen in einer Trim.vbs die die Sterne und die leerzeichen wegmacht.

Im endefekt steht:

PRT_KyoFS3140
PRT_KyoFS2020d
PRT_Konica_C454e
PRT_LEX_M5170
PRT_HPLJ_6
PRT_LEX_X363
PRT_LEX_X264
PRT_KyoFS1370DN
PRT_EPSWF2540

drinnen. Also eigendlich nichts besonderes. und das versuch ich halt zeilenweise auszulesen. Ich hab auf dem Netlogon im Ordner D vbs Dateien erstellt die nur für die Druckerverbindung sind und so benannt das ich mit
\\Server\Netlogon\D\PRT_KyoFS3140.vbs
einfach nur hergehe und den Drucker in dieser VBS verbinde.
Wenn du noch was brauchst einfach bescheid geben.

Demzufolge steht in File1 die unbearbeitete version dieser Ausgabe mit sternchen und mit leerzeichen.

Eingelesen werden Sie durch:

IF EXIST "C:\Program Files (x86)\Windows Defender\MpAsDesc.dll" (
set File=C:\Users\%username%\neues.txt
set File2=C:\Users\%username%\neues2.txt
set Dok=Users
)
IF NOT EXIST "C:\Program Files (x86)\Windows Defender\MpAsDesc.dll" (
set File="C:\Dokumente und Einstellungen\%username%\neues.txt"
set File2="C:\Dokumente und Einstellungen\%username%\neues2.txt"
set Dok=Dokumente und Einstellungen
)
AlbertMinrich
AlbertMinrich 19.10.2015 um 16:21:06 Uhr
Goto Top
\\Server\netlogon\D\C:\Dokumente.vbs

Ich würd mal darauf tippen, dass du irgendwas ins Profilverzeichnis des Users schreibst/liest und das liegt ab Windows 7 unter C:\Users, bis Windows XP lag das unter "C:\Dokumente und Einstellungen". Und da letzteres Leerzeichen enthält, würde ich mal Anführungszeichen arbeiten ("%file2%").

Gruß
AlbMin
Marcel1989
Marcel1989 19.10.2015 um 16:22:23 Uhr
Goto Top
Hallo AlbertMinrich,

schau mal nochmal nach oben ^^ warst etwas schneller als ich bearbeiten konnte. =))
emeriks
emeriks 19.10.2015 um 16:27:51 Uhr
Goto Top
Ich würd mal darauf tippen, dass du irgendwas ins Profilverzeichnis des Users schreibst/liest und das liegt ab Windows 7 unter C:\Users, bis Windows XP lag das unter "C:\Dokumente und Einstellungen". Und da letzteres Leerzeichen enthält, würde ich mal Anführungszeichen arbeiten ("%file2%").
Ja klar! Das wird sein ....
Och man, das war jetzt zu einfach ....
Marcel1989
Marcel1989 19.10.2015 um 16:54:05 Uhr
Goto Top
@echo off

IF EXIST "C:\Program Files (x86)\Windows Defender\MpAsDesc.dll" (
set File=C:\Users\%username%\neues.txt
set File2=C:\Users\%username%\neues2.txt
set Dok=Users
)
IF NOT EXIST "C:\Program Files (x86)\Windows Defender\MpAsDesc.dll" (
set File="C:\Dokumente und Einstellungen\%username%\neues.txt"
set File2="C:\Dokumente und Einstellungen\%username%\neues2.txt"
Set Dok="Dokumente und Einstellungen"
)

net use * /delete /yes
@Ping -n 2 localhost>nul

net use G: \\HUGO\files$
net use T: \\HUGO\Transfer
net use H: \\Server\%username%
net use U: \\Server\GemDateien

net user /DOMAIN %username% | find ""
if not errorlevel = 1 (
net use G: /delete /yes
net use G: \\Server\data1\
)
@Ping -n 2 localhost>nul
\\HUGO\netlogon\con2prt.exe /f
net user /DOMAIN %username% | findstr "PRT_" >>%file%

Start /wait \\Server\netlogon\trim.vbs
)
@Ping -n 4 localhost>nul
for /f %%i in (%file2%) do (
Start /wait \\Server\netlogon\D\%%i.vbs
)

Del %file%
Del %file2%
@Ping -n 20 localhost>nul
Start /wait \\Server\netlogon\Standarddrucker.vbs

Das ist nun das Script und er macht alles bis hin zum for /f %%i in (%file2%) do

Das bricht er ab weil er sagt das er das nicht findet. \\Server\netlogon\D\C:\Dokumente.vbs.

Ich kanns mir leider nicht erklären denn auch mit " ist dies nicht zu lösen.
114757
Lösung 114757 19.10.2015, aktualisiert am 20.10.2015 um 08:41:01 Uhr
Goto Top
Moin,
schreib das so dann klappt das auch mit Leerzeichen im Pfad :
set "file2=C:\Dokumente und Einstellungen\%username%\neues2.txt"  
for /f "usebackq delims=" %%i in ("%file2%") do (  
    Start /wait "\\Server\netlogon\D\%%i.vbs"  
)

In einer FOR /F Schleife kann man Pfadangaben mit Leerzeichen und doppelte Anführungszeichen nur benutzen wenn man usebackq benutzt.

for /? sagt dir das auch ...

Gruß jodel32
Marcel1989
Marcel1989 20.10.2015 aktualisiert um 09:10:53 Uhr
Goto Top
Perfekt. Danke.
Nun führt er mein VBS aus Problem ist nur noch zu lösen warum das VBS nicht funktioniert...
Schade aber wird wahrscheinlich ein neues Thema da es um VBS geht und ich leider momentan keine Ahnung habe warum er sie unter windows XP nicht nimmt und unter win 8.1, 10 schon. Ich poste trotzdem mal meine Formel. Vieleicht weiß jemand ja was.

set wshnet = CreateObject("WScript.Network")
wshnet.AddWindowsPrinterConnection "\\printsrv\Dell1710nEDV"

Leider funktioniert der Befehl unter windows XP nicht. bzw vieleicht liegt es ja am Printserver... also die leute können sich mit XP an dem 2012er server ohne probleme selbst ihren drucker hizufügen. nur über das Script habe ich probleme.

danke schonmal.

Gruß Marcel
114757
114757 20.10.2015 aktualisiert um 10:10:58 Uhr
Goto Top
Führe das VBS in der Schleife mal so aus, das ist auch immer die empfohlene Methode für VB-Scripts:
cscript //NOLOGO /B "\\Server\netlogon\D\%%i.vbs"  
Wenn auf dem XP der "Windows Script Host" fehlt geht das aber auch in die Hose.

Wieso mappst du Drucker noch über Skripte ?? Per GPP und Zielgruppenadressierung ist das doch viel zuverlässiger ....

GPP Extensions gibt es für alle Windows-OS auch für XP
https://www.microsoft.com/de-de/download/details.aspx?id=3628