VBS-Datei via Batch erstellen
Hallo zusammen,
ich möchte aus einer Textliste in der pro Zeile ein Druckername enthalten ist jeweils eine vbs-Datei erstellen.
Dazu habe ich folgenden Codeschnipsel:
eigentlich erwarte ich eine Datei "HPDrucker123_auf_Printserver1.vbs" mit folgendem Inhalt:
Aber irgendwie klappt's nicht... help!
Gruß & Danke
Lars
ich möchte aus einer Textliste in der pro Zeile ein Druckername enthalten ist jeweils eine vbs-Datei erstellen.
Dazu habe ich folgenden Codeschnipsel:
for /f %%i in (druckerliste.txt) do (
echo Set WshNetwork = CreateObject("WScript.Network")>%%i_auf_PrintServer1.vbs
echo WshNetwork.AddwindowsPrinterConnection "\\lttps01\%%i">%%i_auf_PrintServer1.vbs
)
eigentlich erwarte ich eine Datei "HPDrucker123_auf_Printserver1.vbs" mit folgendem Inhalt:
Set WshNetwork = CreateObject("WScript.Network")
WshNetwork.AddwindowsPrinterConnection "\\PrintServer1\HPDrucker123"
Aber irgendwie klappt's nicht... help!
Gruß & Danke
Lars
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 163756
Url: https://administrator.de/contentid/163756
Ausgedruckt am: 22.11.2024 um 03:11 Uhr
20 Kommentare
Neuester Kommentar
Eine überaus gut formulierte Fehlerbeschreibung.
MfG,
DB
Moin Larz,
wenn du magst, dann würde ich gern das, was du vermutlich für eine Fehlerbeschreibung hältst, in unseren FAQ als Beispiel verwenden.
Du schreibst in dem Script-Schnipsel 2 Zeilen und legst jeweils mit ">" die Zieldatei neu an.
Grüße
Biber
wenn du magst, dann würde ich gern das, was du vermutlich für eine Fehlerbeschreibung hältst, in unseren FAQ als Beispiel verwenden.
Du schreibst in dem Script-Schnipsel 2 Zeilen und legst jeweils mit ">" die Zieldatei neu an.
- Schreib nur eine Zeile
- oder nur die erste Zeile mit ">"und die Nachfolgezeichen mit ">>"
- oder setze das ">" hinter die schliessende "FOR /F...DO "-Anweisungsklammer.
Grüße
Biber
Aloha Biber,
was natürlich zu bevorzugen ist, da die Datei somit nur einmal geöffnet werden muss (mich an Schleife ohne mehrmaliges Öffnen der Datei in welche Umgeleiteitet wird erinner)
btw: müsste
nicht auch funktionieren? (wäre dann nicht zweizeilig, sollte dennoch im vbs abgearbeitet werden, wenn ich mich nicht irre)
greetz André
was natürlich zu bevorzugen ist, da die Datei somit nur einmal geöffnet werden muss (mich an Schleife ohne mehrmaliges Öffnen der Datei in welche Umgeleiteitet wird erinner)
btw: müsste
for /f %%i in (druckerliste.txt) do echo Set WshNetwork = CreateObject("WScript.Network"):WshNetwork.AddwindowsPrinterConnection "\\lttps01\%%i">%%i_auf_PrintServer1.vbs
greetz André
meinste mich?
Moin Skyemugen,
eigentlich wollte ich Larz gar nix Gabelfertiges servieren.
Der ist ist doch auch nicht erst gestern abend aus irgendeinem Wurmloch auf diesen unseren Planeten gefallen.
Aber da ich mich anscheinend zu westerwellig ausgedrückt habe, jetzt noch mal die Antwort hinter der Antwort.
Ursprungsskript:
Grüße
Biber
eigentlich wollte ich Larz gar nix Gabelfertiges servieren.
Der ist ist doch auch nicht erst gestern abend aus irgendeinem Wurmloch auf diesen unseren Planeten gefallen.
Aber da ich mich anscheinend zu westerwellig ausgedrückt habe, jetzt noch mal die Antwort hinter der Antwort.
Ursprungsskript:
for /f %%i in (druckerliste.txt) do (
echo Set WshNetwork = CreateObject("WScript.Network")>%%i_auf_PrintServer1.vbs
echo WshNetwork.AddwindowsPrinterConnection "\\lttps01\%%i">%%i_auf_PrintServer1.vbs
)
- Schreib nur eine Zeile
for /f %%i in (druckerliste.txt) do (
echo CreateObject("WScript.Network").AddwindowsPrinterConnection "\\lttps01\%%i">%%i_auf_PrintServer1.vbs
)
- oder nur die erste Zeile mit ">"und die Nachfolgezeichen mit ">>"
- oder setze das ">" hinter die schliessende "FOR /F...DO "-Anweisungsklammer.
Grüße
Biber
Moin Larz,
jetzt (mit noch detailierterer) Fehlerbeschreibung wird es klar - die im VB-Skript enthaltene KlammerZu muss maskiert werden.
POC am CMD-Prompt:
Grüße
Biber
jetzt (mit noch detailierterer) Fehlerbeschreibung wird es klar - die im VB-Skript enthaltene KlammerZu muss maskiert werden.
POC am CMD-Prompt:
(=19:49:21 D:\temp=)
>for /f %i in ("drucherxy") do @(echo CreateObject("WScript.Network").AddwindowsPrinterConnection "\\lttps01\%i">con)
".AddwindowsPrinterConnection" ist syntaktisch an dieser Stelle nicht verarbeitbar.
## tut nicht
(=19:49:54 D:\temp=)
>for /f %i in ("drucherxy") do @(echo CreateObject("WScript.Network"^).AddwindowsPrinterConnection "\\lttps01\%i">con)
CreateObject("WScript.Network").AddwindowsPrinterConnection "\\lttps01\drucherxy"
##tutet
Grüße
Biber
Yup, genau! Ist besonders bei & also verknüpften Anweisungen zu benutzten!
Wenn Du in einer .vbs ein & per Batch schreiben möchtest, wird das
scheitern, weil ne Batch das & selbst als Kommando interpretiert!
also: ^&^ schreibt & in die .vbs
probier das und es passiert nix:
echo & > test1.vbs
probier das:
echo ^&^ > test1.vbs
Und?
Wenn Du in einer .vbs ein & per Batch schreiben möchtest, wird das
scheitern, weil ne Batch das & selbst als Kommando interpretiert!
also: ^&^ schreibt & in die .vbs
probier das und es passiert nix:
echo & > test1.vbs
probier das:
echo ^&^ > test1.vbs
Und?
Aloha Larz,
keine Ahnung, wie du jetzt wieder Anführungszeichen definieren würdest, in welchem Zusammenhang - aber das
^
wird zum Escapen von möglichen Befehls- oder Syntaxzeichen verwendet (allerdings nicht immer und bei allen ... %
lässt sich in der batch z.B. durch %%
escapen [also ein weiteres Prozentzeichen])greetz André
edit:
ein
^
zu viel meiner Meinung nach ;) wenn du so am prompt testest, fragt man dich höchstens, ob noch mehr kommen soll :P
@Skyemugen
Wie schon angemerkt, löst sich das "Klammerproblem" von selbst, wenn nur eine Zeile Script benötigt wird - also etwa (siehe auch oben bei Biber)
Wozu es x solcher Scripte braucht, ist dann aber mal wieder eine ganz andere Frage (nur als Anmerkung: auch VBS kann Aufrufparameter verwenden) ...
Grüße
bastla
ein ^ zu viel meiner Meinung nach ;)
Schließe mich an, wobei es aber gar nicht auffällt, wenn dahinter noch was kommt (was bei "&" ziemlich wahrscheinlich ist), da dann eben zB auch das folgende Leerzeichen escaped wird ...Wie schon angemerkt, löst sich das "Klammerproblem" von selbst, wenn nur eine Zeile Script benötigt wird - also etwa (siehe auch oben bei Biber)
for /f %%i in (druckerliste.txt) do echo CreateObject("WScript.Network").AddwindowsPrinterConnection "\\lttps01\%%i">"%%i_auf_PrintServer1.vbs"
Grüße
bastla