Top-Themen

Aktuelle Themen (A bis Z)

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

VBS Script: Rechner Namen aus TXT mit VBS verknüpfen

Frage Entwicklung VB for Applications

Mitglied: lukyluky

lukyluky (Level 1) - Jetzt verbinden

30.07.2013, aktualisiert 31.07.2013, 1690 Aufrufe, 9 Kommentare

Hallo zusammen,

ich hoffe Ihr könnt mir helfen.

Habe ein kleines Script geschrieben.
01.
set wshell = CreateObject("Wscript.shell") 
02.
Set oFSO = CreateObject ("Scripting.FileSystemObject")  
03.
Dim fso, destfolder,sourcefolder, f 
04.
Set WshShell = CreateObject("WScript.Shell") 
05.
Set FSO = CreateObject("Scripting.FileSystemObject") 
06.
Sourcefolder = "\\abc\defl$\test3" 
07.
Destfolder = "\\Rechner" & "\C$\temp" 
08.
On Error resume next  
09.
If (FSO.FolderExists("\\Rechner" & "\C$\test")) THEN 
10.
msgbox "test vorhanden" 
11.
ELSE 
12.
If (FSO.FolderExists("\\Rechner" & "\C$\test2")) THEN 
13.
msgbox "test2 vorhanden" 
14.
ELSE 
15.
FSO.CopyFolder Sourcefolder, Destfolder, True 
16.
WshShell.run ("\\Rechner" & " > " & File ),0,true 
17.
  
18.
linefeed = CHR(10) 
19.
careturn = CHR(13) 
20.
Const ForReading = 1, ForWriting = 2, ForAppending = 8 
21.
	f.Write "\\Rechner\temp" 
22.
	f.Close 
23.
end If 
24.
end if
Momentan wird im Script ein Rechner direkt angesprochen. Das Script soll überprüfen ob entweder der Ordner Test oder Test2 vorhanden sind. Falls beide nicht vorhanden sind soll dann vom Server \\abc der Inhalt des Ordners Test3 auf den Client kopiert werden.

Gibt es eine möglichkeit das Script so umzuschreiben das er sich die Rechner Namen aus einer TXT Datei nimmt?


Ich Danke euch schon mal für eure Hilfe.
Mitglied: bastla
30.07.2013, aktualisiert um 17:01 Uhr
Hallo lukyluky!

Dein Scriptansatz hat noch Potenzial (nicht nur hinsichtlich der Formatierung als "Code" - bitte nachholen) - ungetestet eher so:
01.
Sourcefolder = "\\abc\defl$\test3" 
02.
Destfolder = "\C$\temp" 
03.
Computers = "\\abc\def1$\CompList.txt" 
04.
 
05.
Set fso = CreateObject("Scripting.FileSystemObject") 
06.
 
07.
Comps = Split(fso.OpenTextFile(Computers).ReadAll, vbNewline) 'Computernamen aus Textdatei in Array einlesen 
08.
For Each Comp In Comps 
09.
    If Trim(Comp) <> "" Then 'leere Zeilen nicht verarbeiten 
10.
        'On Error Resume Next 'während der Testphase nicht sinnvoll, da so keine Fehlermeldungen angezeigt werden 
11.
        If fso.FolderExists("\\" & Comp & "\C$\test") Then 
12.
            WScript.Echo Comp & ": test vorhanden" 
13.
        Else 
14.
            If fso.FolderExists("\\" & Comp & "\C$\test2") Then 
15.
                WScript.Echo Comp & ": test2 vorhanden" 
16.
            Else 
17.
                fso.CopyFolder Sourcefolder, "\\" & Comp & Destfolder, True 
18.
            End If 
19.
        End If 
20.
    End If 
21.
Next
Annahme hinsichtlich der "CompList.txt": In jeder Zeile steht ein Computername ohne "\\" davor.

Noch als Anmerkung: Mit "WScript.Echo" anstatt "MsgBox" kannst Du das Script über "cscript" starten und musst nicht jede MessageBox wegklicken - wenn Du trotzdem über "wscript" startest, erhältst Du weiterhin mit "WScript.Echo" eine Standard-MessageBox angezeigt ...

Grüße
bastla
Bitte warten ..
Mitglied: lukyluky
31.07.2013 um 07:07 Uhr
Super vielen Dank.
Die Formatierung holle ich gleich noch nach.

Einen Punkt habe ich leider vergessen.
Es müsste noch eine Ausgabe in eine Data entstehen in welcher die Information ersiehtlich sind ob bei Rechner1,2,3,4,5 einer dieser Ordner vorhanden war oder nicht.
Bitte warten ..
Mitglied: Biber
31.07.2013, aktualisiert um 10:19 Uhr
Moin lukyluky,


Zitat von lukyluky:
Super vielen Dank.
Die Formatierung holle ich gleich noch nach.

Einen Punkt habe ich leider vergessen.
Es müsste noch eine Ausgabe in eine Data entstehen in welcher die Information ersiehtlich sind ob bei Rechner1,2,3,4,5 einer
dieser Ordner vorhanden war oder nicht.
Befrage mal eine Suchmaschine nach dem Stichwort "Logfile".

Um es vorwegzunehmen: Bei den meisten so genannten Logfiles hat sich vor deren Entstehung jemand überlegt,
a) wo die entstehen sollen
b) was denn der Inhalt sein soll.

Hast du da schon etwas weniger abstrakte Vorstellungen?

Wir könnten naürlich in irgendeine Textdatei reinschreiben "Einer dieser Ordner war vorhanden", wie du es oben spezifiziert hast.

Grüße
Biber
[Edit] @bastla
Okay, dann lass doch mal einem Handwerker mit den paar Informationen freie Hand.
Sag zum Beispiel "Ich hätte gern meine Wohnung in anderen Farben" zu einem Maler oder zu einem Arbeitsvermittler "Ich hätte gern einen anderen Job."
[/Edit]
Bitte warten ..
Mitglied: bastla
31.07.2013, aktualisiert um 10:34 Uhr
Hallo lukyluky!

Dann (weiterhin ungetestet) etwa so:
01.
Sourcefolder = "\\abc\defl$\test3" 
02.
Destfolder = "\C$\temp" 
03.
Computers = "\\abc\def1$\CompList.txt" 
04.
Report = "\\abc\def1$\CompVorhanden.txt" 
05.
 
06.
Set fso = CreateObject("Scripting.FileSystemObject") 
07.
 
08.
Comps = Split(fso.OpenTextFile(Computers).ReadAll, vbNewline) 'Computernamen aus Textdatei in Array einlesen 
09.
For Each Comp In Comps 
10.
    If Trim(Comp) <> "" Then 'leere Zeilen nicht verarbeiten 
11.
        Existing = False 'Schalter "Vorhanden" für jeden Computer zunächst rücksetzen 
12.
        'On Error Resume Next 'während der Testphase nicht sinnvoll, da so keine Fehlermeldungen angezeigt werden 
13.
        If fso.FolderExists("\\" & Comp & "\C$\test") Then 
14.
            WScript.Echo Comp & ": test vorhanden" 
15.
            Existing = True 'Schalter "Vorhanden" setzen 
16.
        Else 
17.
            If fso.FolderExists("\\" & Comp & "\C$\test2") Then 
18.
                WScript.Echo Comp & ": test2 vorhanden" 
19.
                Existing = True 'Schalter "Vorhanden" setzen 
20.
            Else 
21.
                fso.CopyFolder Sourcefolder, "\\" & Comp & Destfolder, True 
22.
            End If 
23.
        End If 
24.
        If Existing Then Rep = Rep & vbNewline & Comp 'Wenn vorhanden, Eintragung in Liste (mit Zeilenschaltung) 
25.
    End If 
26.
Next 
27.
'Wenn Liste "Vorhanden" nicht leer ist, in Datei schreiben (und dabei die erste Zeilenschaltung überspringen) 
28.
If Rep <> "" Then fso.CreateTextFile(Report).Write Mid(Rep, 3)
Grüße
bastla

[Edit] @ Biber
Es geht hier doch eher vorrangig um das Handwerkszeug (obwohl natürlich Deine Hinweise völlig berechtigt sind) ...
[/Edit]

[Edit2] @ Biber
Ist doch aber seine Wohnung (oder vermutlich eher eine Ecke im Keller ) ...

... wobei ich natürlich zugebe, dass mich das Szenario "Wenn's gar keinen Ordner gibt, na dann kopieren wir eben einen." auch überrascht hat - aber gelegentlich bekomme sogar ich meine angeborene Neugier in den Griff ...
[/Edit2]
Bitte warten ..
Mitglied: lukyluky
31.07.2013 um 10:57 Uhr
Hallo Bastla,

vielen Dank für dein geschriebenes Script. Es funktioniert schon fast perfekt. Leider wird nichts in die CompVerhanden.txt geschrieben.
01.
27.'Wenn Liste "Vorhanden" nicht leer ist, in Datei schreiben (und dabei die erste Zeilenschaltung überspringen) 
Leider verstehe ich nicht was du damit meinst. Sorry.

@Biber: Ich habe meine Ausgabe Wünsch sehr oberflächlich gehalten da ich diese selbst anpassen wollte. Möchte ja auch noch etwas lernen.
Bin halt ein VBS Anfänger.
Hätte gerne eine Ausgabe die im optimalem Fall so aussieht:
Rechner1 Ordner vorhanden Datei nicht kopiert
Rechner2 Ordner nicht vorhanden Datei kopiert
Rechner3 Rechner nicht erreichbar

Es würde aber auch reichen wenn nur ein Punkt drin stehen würde:
Rechner1 Ordner nicht vorhanden oder Datei nicht kopiert

Wichtig wäre nur das ich im nachhinein ersehen kann bei welchen Rechnern die Ordnern nicht vorhanden sind oder die Dateien nicht kopiert wurden.
Bitte warten ..
Mitglied: bastla
31.07.2013, aktualisiert um 16:45 Uhr
Hallo lukyluky!

Versuch es damit (ungetestet):
01.
SourceFolder = "\\abc\defl$\test3" 
02.
DestFolder = "temp" 
03.
Computers = "\\abc\def1$\CompList.txt" 
04.
Report = "\\abc\def1$\CompVorhanden.txt" 
05.
 
06.
Set fso = CreateObject("Scripting.FileSystemObject") 
07.
 
08.
Comps = Split(fso.OpenTextFile(Computers).ReadAll, vbNewline) 'Computernamen aus Textdatei in Array einlesen 
09.
For Each Comp In Comps 
10.
    If Trim(Comp) <> "" Then 'leere Zeilen nicht verarbeiten 
11.
        Existing = False 'Schalter "Vorhanden" rücksetzen 
12.
        Rep = Rep & vbNewline & Comp 'Ausgabezeile für Computer erzeugen 
13.
        DestDrive = "\\" & Comp & "\C$\" 'Zielpfad festlegen ("\\Server\Share" ist für VBS ein "Drive") 
14.
        If fso.DriveExists(DestDrive) Then 'Ziel erreichbar? 
15.
            If fso.FolderExists(DestDrive & "test") Then  
16.
                WScript.Echo Comp & ": test vorhanden" 
17.
                Existing = True 'Schalter "Vorhanden" setzen 
18.
                Rep = Rep & ";test vorhanden" 'Hinweis in Ausgabezeile schreiben 
19.
            End If 
20.
            If fso.FolderExists(DestDrive & "test2") Then 
21.
                WScript.Echo Comp & ": test2 vorhanden" 
22.
                Existing = True 'Schalter "Vorhanden" setzen 
23.
                Rep = Rep & ";test2 vorhanden" 'Hinweis in Ausgabezeile schreiben 
24.
            End If 
25.
            If Not Existing Then 
26.
                fso.CopyFolder SourceFolder, DestDrive & DestFolder, True 
27.
                Rep = Rep & ";kopiert" 'Hinweis in Ausgabezeile schreiben 
28.
            End If 
29.
        Else 'Ziel nicht gefunden 
30.
            Rep = Rep & ";nicht erreicht" 'Hinweis in Ausgabezeile schreiben 
31.
        End If 
32.
    End If 
33.
Next 
34.
fso.CreateTextFile(Report).Write Mid(Rep, 3) 'gesamte Ausgabe schreiben
Grüße
bastla
Bitte warten ..
Mitglied: lukyluky
01.08.2013 um 16:26 Uhr
Hallo Bastla,

das Script funktioniert super!!
Vielen Dank

Habe versucht das Script alleine etwas zu erweitern, aber ohne eure Hilfe kriege ich das leider nicht hin.
Hintergrund meines Scripts:
Wenn Test oder Test2 nicht vorhanden sind wird eine Installationsdatei in den Ordner c:\Temp kopiert und diese sollte im Anschluss ausgeführt werden.

Habe meine Erweiterung zwischen deinen Code geschoben.

Bekomme immer die Meldung das er die Installationsdatei nicht finden kann.

01.
If Not Existing Then  
02.
fso.CopyFolder SourceFolder, DestDrive & DestFolder, True  
03.
Rep = Rep & ";kopiert" 'Hinweis in Ausgabezeile schreiben  
04.
End If  
05.
Else 'Ziel nicht gefunden  
06.
Rep = Rep & ";nicht erreicht" 'Hinweis in Ausgabezeile schreiben  
07.
End If  
08.
End If  
09.
 
10.
Next 
11.
'Script erweiterung 
12.
set wshell = CreateObject("Wscript.shell") 
13.
filespec = "\\" & Comp & "\c$\temp\1.exe" 
14.
WScript.Echo ReportFileStatus(filespec) 
15.
 
16.
Function ReportFileStatus(filespec) 
17.
  
18.
Dim fso, msg 
19.
 Set fso = CreateObject("Scripting.FileSystemObject") 
20.
 If (fso.FileExists(filespec)) Then 
21.
 wshell.run "c:\temp\psexec \\ & Comp c:\temp\1.exe" 
22.
 Else 
23.
WScript.Echo Comp & ": doesn't exist"   
24.
 
25.
 End If 
26.
 ReportFileStatus = WScript.Echo 
27.
 End Function 
28.
' Script erweiterung ende 
29.
 
30.
fso.CreateTextFile(Report).Write Mid(Rep, 3) 'gesamte Ausgabe schreiben
Ich hoffe das Ihr mir hierbei auch helfen könnt.

Danke
Bitte warten ..
Mitglied: Biber
01.08.2013 um 17:25 Uhr
Moin lukyluky,

ich will bastla da nicht vorgreifen, aber siehst du einen Unterschied zwischen Zeile 13 und Zeile 21?
In beiden Zeilen werden die vier Buchstaben "Comp" verwendet.
Einmal ist damit eine Variable gemeint, einmal ein beliebiger Test.

Grüße
Biber
Bitte warten ..
Mitglied: bastla
01.08.2013, aktualisiert um 22:26 Uhr
Hallo lukyluky!

Wie schon von Biber angesprochen kann Deine Zeile 21 so nicht funktionieren - versuch es damit:
01.
'Script erweiterung 
02.
Set WShell = CreateObject("WScript.Shell") 
03.
filespec = "\\" & Comp & "\c$\temp\1.exe" 
04.
If fso.FileExists(filespec) Then 
05.
    WShell.Run "c:\temp\psexec \\" & Comp & " c:\temp\1.exe" 
06.
Else 
07.
    WScript.Echo Comp & ": doesn't exist"   
08.
End If 
09.
' Script erweiterung ende
Die Option "-c" von "psexec" könnte vielleicht hilfreich sein, und vermutlich wirst du auch noch jeweils eine Ausgabezeile für die Log-Datei ergänzen wollen ...

Grüße
bastla
Bitte warten ..
Ähnliche Inhalte
VB for Applications
VBS Script kann Prgramm nicht starten
gelöst Frage von C.BoernerVB for Applications15 Kommentare

Hallo ihr Admins, Ich habe folgendes Scenarios ein Programm läuft im Hintergrund (Drivve-Image) das übergibt Werte an ein VBS ...

Batch & Shell
Hilfe Bei einem vbs Script
gelöst Frage von Hattori-HanzoBatch & Shell19 Kommentare

Hey Leute Könnt ihr mir bitte sagen was daran falsch ist? beschäftige mich erst seit kurzem mit vbs scripts. ...

VB for Applications
VBS: Unterordner gleichen Namens verschieben
gelöst Frage von GurkenhobelVB for Applications3 Kommentare

Hallo Gemeinde, Ich habe auf einem Laufwerk 12 Unterordner (Januar Dezember) die wiederum jeweils sieben Unterordner (Montag Sonntag) umfassen ...

Batch & Shell
VBS Script um Emailadressen aus einer TXT, CSV oder XLS-Datei zu lesen
gelöst Frage von Privex007Batch & Shell5 Kommentare

Hallo zusammen, ich benötige eine Möglichkeit meine Dateien (txt, csv und xls) zu durchforsten und meine Mailadressen in eine ...

Neue Wissensbeiträge
Windows 10

Windows 10 v1709 EN murkst bei den Regionseinstellungen

Tipp von DerWoWusste vor 1 MinuteWindows 10

Dieser kurze Tipp richtet sich an den kleinen Personenkreis, der Win10 v1709 frisch installiert und dabei die englische Version ...

Webbrowser

Kein Ton bei Firefox Quantum über RDP

Tipp von Moddry vor 17 MinutenWebbrowser

Hallo Kollegen! Hatte das Problem, dass der neue Firefox bei mir auf der Kiste keinen Ton hat, wenn ich ...

Internet

EU-DSGVO: WHOIS soll weniger Informationen liefern

Information von sabines vor 12 StundenInternet4 Kommentare

Wegen der europäische Datenschutzgrundverordnung stehen die Prozesse um die Registrierung von Domains auf dem Prüfstand. Sollte die Forderungen umgesetzt ...

Verschlüsselung & Zertifikate

19 Jahre alter Angriff auf TLS funktioniert immer noch

Information von BassFishFox vor 18 StundenVerschlüsselung & Zertifikate1 Kommentar

Interessant zu lesen. Der Bleichenbacher-Angriff gilt unter Kryptographen als Klassiker, trotzdem funktioniert er oft noch. Wie wir herausgefunden haben, ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
Von rj11 auf rj45
Frage von jensgebkenLAN, WAN, Wireless19 Kommentare

Hallo Gemeinschaft, könnt ihr mir vielleicht bei der anfertigung eines Kabels helfen - habe ein rj 11 stecker und ...

Netzwerkmanagement
NAS über zwei weitere Ethernet Anschlüsse verbinden
gelöst Frage von Sibelius001Netzwerkmanagement17 Kommentare

Sorry - ich bin hier wahrscheinlich als kompetter IT Trottel unterwegs. Aber eventuell kann mir jemand ganz einfach helfen: ...

Netzwerkmanagement
Firefox Profieles im Roaming
gelöst Frage von Hendrik2586Netzwerkmanagement17 Kommentare

Hallo liebe Leute. :) Ich hab da ein kleines Problem, welches anscheinend nicht unbekannt ist. Wir nutzen hier in ...

LAN, WAN, Wireless
Häufig Probleme beim Anmelden in WLAN
Frage von mabue88LAN, WAN, Wireless15 Kommentare

Hallo zusammen, in einem Netzwerk gibt es relativ häufig (1-2 mal pro Woche) Probleme mit der WLAN-Verbindung. Zunächst mal ...