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, 5728 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.

Mit freundlichen Grüßen,
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 ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(2)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
VB for Applications
VBS oder Batch um eine Datei in Unterordner zu verschieben (1)

Frage von MrRoyal zum Thema VB for Applications ...

Batch & Shell
gelöst VBS Script in eine Textdatei ausgeben (VBS mit Batch zusammenführen) (5)

Frage von Luuke257 zum Thema Batch & Shell ...

Batch & Shell
Batch-Variable nach Stichworten aus TXT Datei durchsuchen (3)

Frage von Markus5579 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...

Outlook & Mail
Outlook 2010 findet ost datei nicht (18)

Frage von Floh21 zum Thema Outlook & Mail ...