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
GELÖST

VBS-Datei via Batch erstellen

Frage Entwicklung Batch & Shell

Mitglied: Larz

Larz (Level 2) - Jetzt verbinden

31.03.2011 um 18:13 Uhr, 5843 Aufrufe, 20 Kommentare

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:

01.
for /f %%i in (druckerliste.txt) do ( 
02.
echo Set WshNetwork = CreateObject("WScript.Network")>%%i_auf_PrintServer1.vbs 
03.
echo WshNetwork.AddwindowsPrinterConnection "\\lttps01\%%i">%%i_auf_PrintServer1.vbs 
04.
)
eigentlich erwarte ich eine Datei "HPDrucker123_auf_Printserver1.vbs" mit folgendem Inhalt:

01.
Set WshNetwork = CreateObject("WScript.Network") 
02.
WshNetwork.AddwindowsPrinterConnection "\\PrintServer1\HPDrucker123" 
Aber irgendwie klappt's nicht... help!

Gruß & Danke
Lars
Mitglied: MisterExpulso
31.03.2011 um 18:16 Uhr
Zitat von Larz:
Aber irgendwie klappt's nicht... help!

Eine überaus gut formulierte Fehlerbeschreibung.

MfG,
DB
Bitte warten ..
Mitglied: Biber
31.03.2011 um 18:28 Uhr
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.

  • 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
Bitte warten ..
Mitglied: Skyemugen
31.03.2011 um 18:44 Uhr
Zitat von Biber:
  • oder setze das ">" hinter die schliessende "FOR /F...DO "-Anweisungsklammer.
Aloha Biber,
was natürlich zu bevorzugen ist, da die Datei somit nur einmal geöffnet werden muss (mich an Phils Tipp 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
nicht auch funktionieren? (wäre dann nicht zweizeilig, sollte dennoch im vbs abgearbeitet werden, wenn ich mich nicht irre)

greetz André
Bitte warten ..
Mitglied: FunkerVogt
31.03.2011 um 19:05 Uhr
echo Set WshNetwork = CreateObject("WScript.Network") > HPDrucker123_auf_Printserver1.vbs
echo WshNetwork.AddwindowsPrinterConnection "\\PrintServer1\HPDrucker123" >> HPDrucker123_auf_Printserver1.vbs


meinste so?

Muss es ne Batch Datei sein?
Bitte warten ..
Mitglied: Biber
31.03.2011 um 19:16 Uhr
Zitat von FunkerVogt:
meinste so?
meinste mich?
Bitte warten ..
Mitglied: FunkerVogt
31.03.2011 um 19:20 Uhr
Nee, den Larz!

Ganz nebenbei, wenn Du es für die FAQs gebrauchen kannst:

Das ^ ist bei schreiben in Dateien sehr hilfreich! Was da drin steht, wird als Text dort eingetragen!
Ich hatte das Problem schon mal!


Uwe
Bitte warten ..
Mitglied: Biber
31.03.2011 um 19:39 Uhr
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:
01.
for /f %%i in (druckerliste.txt) do (  
02.
    echo Set WshNetwork = CreateObject("WScript.Network")>%%i_auf_PrintServer1.vbs 
03.
    echo WshNetwork.AddwindowsPrinterConnection "\\lttps01\%%i">%%i_auf_PrintServer1.vbs  
04.
)
  • Schreib nur eine Zeile
01.
for /f %%i in (druckerliste.txt) do (  
02.
    echo CreateObject("WScript.Network").AddwindowsPrinterConnection "\\lttps01\%%i">%%i_auf_PrintServer1.vbs  
03.
)
  • oder nur die erste Zeile mit ">"und die Nachfolgezeichen mit ">>"
Siehe unten bei FunkerVogt dem Redseligen.

  • oder setze das ">" hinter die schliessende "FOR /F...DO "-Anweisungsklammer.
Siehe bei oben zitiertem Phil-Tipp.

Grüße
Biber
Bitte warten ..
Mitglied: Larz
31.03.2011 um 19:41 Uhr
mea culpa, aber deine Antwort ist mindestens genauso gut formuliert
War etwas im Stress, normalerweise formuliere ich mehr aus... aber ist schon richtig, hätte ich weniger geschludert, wäre meine Anfrage klarer gewesen...

Gruß
Larz
Bitte warten ..
Mitglied: Larz
31.03.2011 um 19:42 Uhr
@Biber
das mit dem zweiten > war ein Tippfehler, in der erstenm Zeile ist es > in der zweiten >>
01.
for /f %%i in (druckerliste.txt) do ( 
02.
echo Set WshNetwork = CreateObject("WScript.Network")>%%i_auf_PrintServer1.vbs 
03.
echo WshNetwork.AddwindowsPrinterConnection "\\lttps01\%%i">>%%i_auf_PrintServer1.vbs 
04.
)
Mein Problem liegt darin, dass er mit eine Datei "%i_auf_PrintServer1.vbs" mit Inhalt
>WshNetwork.AddwindowsPrinterConnection "\\lttps01\%i"

eine Datei "drucker123_auf_PrintServer1.vbs" mit Inhalt
>Set WshNetwork = CreateObject("WScript.Network"

sowie eine Datei "drucker345_auf_PrintServer1.vbs" mit Inhalt
>Set WshNetwork = CreateObject("WScript.Network"

ausgibt. In der zugrunde liegenden Datei "Druckerliste.txt" stehen die Zeilen
>drucker123
>drucker345

Kann das jemand nachbauen? Ich denke es liegt an den Sonderzeichen...

Gruß
Larz
Bitte warten ..
Mitglied: Larz
31.03.2011 um 19:51 Uhr
jein - vom Code her ja, aber es soll jeweils eine Datei %%i_auf_Printserver1.vbs erstellt werden.
Batch muss es nicht unbedingt sein. Einfach nur ein Script wo aus einer Liste Druckernamen eben diese vbs-Dateien macht, mit denen man via Doppelklick o.ä. die Drucker wieder verbinden kann...

Gruß
Larz
Bitte warten ..
Mitglied: Larz
31.03.2011 um 19:52 Uhr
Wie wird das ^ verwendet? Wie Anführungszeichen?

Danke
Larz
Bitte warten ..
Mitglied: Biber
31.03.2011 um 19:53 Uhr
Moin Larz,

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
Bitte warten ..
Mitglied: FunkerVogt
31.03.2011 um 20:18 Uhr
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?
Bitte warten ..
Mitglied: Skyemugen
31.03.2011 um 20:21 Uhr
Zitat von Larz:
Wie wird das ^ verwendet? Wie Anführungszeichen?

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:
Zitat von FunkerVogt:
probier das:
echo ^&^ > test1.vbs

ein ^ zu viel meiner Meinung nach ;) wenn du so am prompt testest, fragt man dich höchstens, ob noch mehr kommen soll :P
Bitte warten ..
Mitglied: FunkerVogt
31.03.2011 um 20:31 Uhr
ein ^ zu viel meiner Meinung nach ;) wenn du so am prompt testest, fragt man dich höchstens, ob noch mehr kommen soll :P


Kann gut möglich sein! Ich habs nur mal schnell nebenbei probiert!
Bitte warten ..
Mitglied: bastla
31.03.2011 um 20:38 Uhr
@Skyemugen
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"
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
Bitte warten ..
Mitglied: FunkerVogt
31.03.2011 um 20:51 Uhr
Jetzt hab ich auch noch was gelernt!

Danke!
Bitte warten ..
Mitglied: bastla
31.03.2011 um 20:52 Uhr
@FunkerVogt
(Auch) Deswegen sind wir doch alle hier ...

Grüße
bastla
Bitte warten ..
Mitglied: Larz
31.03.2011 um 20:58 Uhr
* oder setze das ">" hinter die schliessende "FOR /F...DO "-Anweisungsklammer.

Prima Idee, danke

Gruß
Larz
Bitte warten ..
Mitglied: Larz
31.03.2011 um 21:00 Uhr
*grrrr* einfach das ^hat gefehlt.... danke Biber
dachte schon nach dem Posting
"eigentlich wollte ich Larz gar nix Gabelfertiges servieren."

Du wärst ein Sadist

Problem gelöst, danke an alle

Gruß
Larz
Bitte warten ..
Ähnliche Inhalte
Microsoft
Pop-Up Dialog in Batch erstellen (4)

Frage von batchx zum Thema Microsoft ...

Windows 10
gelöst Vbs oder batch zum Ändern von Dateinamen ab Zeichenkette (13)

Frage von vbaGast zum Thema Windows 10 ...

VB for Applications
gelöst VBS Datei Auswahl Dialog (5)

Frage von 133202 zum Thema VB for Applications ...

VB for Applications
gelöst Tool zur scriptbasierten PDF-Bearbeitung gesucht (VBS oder Batch) (6)

Frage von SarekHL zum Thema VB for Applications ...

Neue Wissensbeiträge
Heiß diskutierte Inhalte
Windows Systemdateien
NTFS und die Defragmentierung (25)

Frage von WinLiCLI zum Thema Windows Systemdateien ...

Windows Server
WIndows Server 2016 core auf dem Intel NUC NUC5i5RYK i5 5250U (17)

Frage von IxxZett zum Thema Windows Server ...

LAN, WAN, Wireless
Zwei Subnetze mit je eigenem Router und Internetzugang verbinden (17)

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