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

VBS - Mehrere Ordner auswählen

Frage Entwicklung VB for Applications

Mitglied: Kirus22

Kirus22 (Level 1) - Jetzt verbinden

04.05.2007, aktualisiert 26.06.2007, 11868 Aufrufe, 5 Kommentare

Hallo zusammen,

ich habe folgendes Problem und zwar möchte ich gerne ein VBS Skript welches mir eine Ordnerübersicht (wie im Windows Explorer; oder so ähnlich) startet. Und ich z.B. den Windows Ordner auswählen kann und div. andere Ordner wie z.B. Install, Privat, Arbeit usw.
Hintergrund ist folgender, ich schreibe gerade ein Backup Skript, nur leider fehlt mir noch die Ordnerauswahl…

Wie kann ich erstens mehrere Ordner auswählen? (Wie man das von Backup Programmen kennt... mit Häkchen setzen vor den Ordnern) Und zweitens wie erreiche ich das die Ordnerauswahl in eine Textdatei geschrieben wird?

Ich finde immer nur Skripte die mir die Ordnerauswahl starten, aber keine Textdatei schreiben und ich kann immer nur einen Ordner auswählen und nicht zwei oder drei... Vielleicht gibt es ja hier ein Skript Guru der mir weiterhelfen kann Oder den ein oder anderen Tipp für mich hat.

Für alle Antworten danke ich schon mal im Voraus!

MfG

Henning
Mitglied: bastla
04.05.2007 um 15:45 Uhr
Hallo Kirus22!

Bis ein Guru vorbeikommt, vielleicht einmal folgendes Grundgerüst:
01.
Const Liste = "D:\Verzeichnisliste.txt" 
02.
Set fso = CreateObject("Scripting.FileSystemObject") 
03.
R = MsgBox("Neue Datei " & Liste & " erstellen?", vbYesNo) 
04.
If R = vbYes Then FileMode = 2 Else FileMode = 8 
05.
Set ListFile = fso.OpenTextFile(Liste, FileMode, True) 
06.
Do 
07.
	Set Verzeichnis = CreateObject("Shell.Application") _ 
08.
		.BrowseForFolder(0, "Datei oder Verzeichnis wählen, Abbruch beendet das Programm", 0, 17) 
09.
	If TypeName(Verzeichnis) = "Nothing" Then 
10.
		ListFile.Close 
11.
		WScript.Quit 
12.
	Else 
13.
		Set Basis = Verzeichnis.Self 
14.
		ListFile.WriteLine Basis.Path 
15.
	End If 
16.
Loop
Hier wird einfach in einer Endlosschleife ein Ordner-Auswahl-Dialog angezeigt und der gewählte Ordner(pfad) in die vorgegebene Textdatei geschrieben. Wenn die Ordnerauswahl abgebrochen wird, endet das Programm.

Häkchen und ähnlichen Schnickschnack hat sich MS für VB oder VBA aufgehoben ...

Grüße
bastla
Bitte warten ..
Mitglied: Kirus22
06.05.2007 um 15:22 Uhr
Hi bastla,
erst mal besten Dank für dein Code! Hat mir sehr weitergeholfen. Jetzt möchte ich das Skript nur noch ein wenig verfeinern. Nur leider hab ich da noch ein paar Probleme. Und zwar wenn ich beim Staren des Skripts auf Nein klicke, macht das Skript einfach weiter, anstatt abzubrechen? Mein zweites (Problem) wie bekomm ich in den Msgboxen ein Titel angezeigt oder z.b. ein Rufzeichen in der Fragestellung bzw. Msgbox?

Hier mein Code:

01.
Sub CreateAfile 
02.
    Set fs = CreateObject("Scripting.FileSystemObject") 
03.
    Set a = fs.CreateTextFile("C:\Windows\System32\Dasi.txt", True) 
04.
    a.Close 
05.
End Sub 
06.
 
07.
Const Liste = "C:\Windows\System32\Dasi.txt" 
08.
 
09.
Set fso = CreateObject("Scripting.FileSystemObject") 
10.
R = MsgBox("Möchten Sie eine neue Sicherungsdatei erstellen?", vbYesNo) 
11.
 
12.
If R = vbYes Then FileMode = 2 Else FileMode = 8 
13.
 
14.
Set ListFile = fso.OpenTextFile(Liste, FileMode, True) 
15.
 
16.
Do 
17.
    Set Verzeichnis = CreateObject("Shell.Application") _ 
18.
        .BrowseForFolder(0, "Bitte wählen Sie die Verzeichnise aus die Sie gerne Sichern möchten, Abbruch beendet das Programm", 0, 17) 
19.
     
20.
    If TypeName(Verzeichnis) = "Nothing" Then 
21.
        ListFile.Close 
22.
        Set WShell = WScript.CreateObject("WScript.Shell") 
23.
        bdata="C:\Windows\System32\" 
24.
        WShell.Run("cmd /U /C; type " & bdata & "Dasi.txt > " & bdata & "Datensicherung.bks") 
25.
				        MsgBox("Die Sicherungsdatei " & bdata & "Datensicherung.bks wurde erfolgreich erstellt! Sie können nun Ihre Datensicherung starten!") 
26.
        WScript.Quit 
27.
    Else 
28.
        Set Basis = Verzeichnis.Self 
29.
        ListFile.WriteLine Basis.Path 
30.
    End If 
31.
    
32.
Loop 
Gruß Henning

P.S Fehler oder Verbesserungen im Code?
Bitte warten ..
Mitglied: bastla
06.05.2007 um 19:53 Uhr
Hallo Kirus22!

Zum Problem Nr 1: It's not a bug, it's a feature - oder, anders formuliert, es sollte nur ermöglicht werden, zwischen "Überschreiben" und "Hinzufügen zur bereits vorhandenen Liste" zu wählen. Zugegeben: Die Formulierung des MsgBox-Prompts war etwas knapp gehalten. Ein "Abbrechen" war aber gar nicht vorgesehen (ist es aber in der neuen Version).
Zur zweiten Frage zitiere ich die VBS-Hilfe (als Datei "script56de.chm" im Web zu finden):

MsgBox(Eingabeaufforderung[, Schaltflächen][, Titel][, Hilfedatei, Kontext])

Für die Schaltflächen hast Du ua folgende Möglichkeiten:
KonstanteWertBeschreibung
vbOKOnly0Nur Schaltfläche OK anzeigen.
vbOKCancel1Anzeigen der Schaltflächen OK und Abbrechen.
vbAbortRetryIgnore2Anzeigen der Schaltflächen Abbrechen, Wiederholen und Ignorieren.
vbYesNoCancel3Anzeigen der Schaltflächen Ja, Nein und Abbrechen.
vbYesNo4Anzeigen der Schaltflächen Ja und Nein.
vbRetryCancel5Anzeigen der Schaltflächen Wiederholen und Abbrechen.
Der Vollständigkeit halber ist auch der Wert angegeben, ich würde Dir aber hinsichtlich Lesbarkeit des Codes empfehlen, die benannten Konstanten vbxxx zu verwenden.

Ergänzen (einfach durch Addition der Konstanten) kannst Du die Schaltflächen durch eines der folgenden Symbole:
KonstanteWertBeschreibung
vbCritical16Anzeigen des Stopp-Symbols.
vbQuestion32Anzeigen des Fragezeichen-Symbols.
vbExclamation48Anzeigen des Symbols Warnung.
vbInformation64Anzeigen des Symbols Information.
Die Umsetzung siehst Du unten.
Zum von Dir erstellten Code (und meinen Ergänzungen):

  • Das Sub am Anfang wurde zum Einen nicht genutzt, ist aber zum Anderen auch wenig sinnvoll, da nur eine leere Datei erstellt würde. Beim Öffnen zum "Schreiben" oder auch "Anfügen" kannst Du aber ohnehin angeben, dass bei Bedarf die Datei erstellt werden soll.

  • Wenn wir nun schon einmal VBS verwenden, gibt es eigentlich keinen Grund, auf eine CMD-Shell zurückzugreifen, nur um eine Kopie der Verzeichnisliste zu erstellen (was ja de facto Deine "type"-Anweisung tut) - daher also ein einfaches "CopyFile". Die beiden Pfade (inkl Dateinamen) habe ich gleich am Anfang festgelegt - sollte es also zB Probleme mit den Schreibrechten in "C:\Windows\System32" geben (zB für einen eingeschränkten Benutzer), musst Du nicht erst lange suchen, wo der neue Pfad einzutragen wäre.

  • Da in der ersten MsgBox nun auch eine dritte Möglichkeit angeboten wird, verwende ich zur Auswertung eine "Select Case"-Struktur, da ich diese für übersichtlicher als eine "If - Then - ElseIf - End If"-Konstruktion halte.

  • Bei der zweiten MsgBox interessiert mich die Reaktion des Benutzers eigentlich gar nicht, daher setze ich die zweite "MsgBox"-Schreibweise (Achtung: ohne Klammern) praktisch als Anweisung ein, und biete auch nur einen "OK"-Button an.

  • Um eine Zeilenschaltung in einen Text einzubauen, kannst Du die Konstante vbCrLF verwenden. Durch das unten verwendete zweite vbCrLF entsteht auch noch eine Leerzeile im MsgBox-Prompt.

  • Im Gegensatz dazu kannst Du mit einer Leerstelle und folgendem "_" eine Codezeile umbrechen, wobei diese aber weiterhin als Gesamtheit betrachtet wird.

Insgesamt ergibt das folgenden Code:
01.
Const Liste = "C:\Windows\System32\Dasi.txt" 
02.
Const BKS = "C:\Windows\System32\Datensicherung.bks" 
03.
 
04.
Set fso = CreateObject("Scripting.FileSystemObject") 
05.
R = MsgBox("Möchten Sie eine neue Sicherungsdatei erstellen (Ja) oder die bestehende Sicherungsdatei ergänzen (Nein)?", _ 
06.
	vbYesNoCancel + vbQuestion, "Wählen Sie ...") 'oder anstelle von vbQuestion zB vbExclamation 
07.
 
08.
Select Case R 
09.
Case vbYes 
10.
	FileMode = 2 
11.
Case vbNo 
12.
	FileMode = 8 
13.
Case Else 
14.
	WScript.Quit 
15.
End Select 
16.
 
17.
Set ListFile = fso.OpenTextFile(Liste, FileMode, True) 
18.
 
19.
Do 
20.
    Set Verzeichnis = CreateObject("Shell.Application") _ 
21.
        .BrowseForFolder(0, "Bitte wählen Sie die Verzeichnise aus, die Sie gerne sichern möchten, Abbruch beendet das Programm", 0, 17) 
22.
     
23.
    If TypeName(Verzeichnis) = "Nothing" Then 
24.
        ListFile.Close 
25.
		fso.CopyFile Liste, BKS 
26.
		MsgBox "Die Sicherungsdatei " & BKS & " wurde erfolgreich erstellt!" & vbCrLF & vbCrLF & _ 
27.
			"Sie können nun Ihre Datensicherung starten!", vbOKOnly + vbInformation, "Fertig." 
28.
        WScript.Quit 
29.
    Else 
30.
        Set Basis = Verzeichnis.Self 
31.
        ListFile.WriteLine Basis.Path 
32.
    End If 
33.
    
34.
Loop
Grüße
bastla
Bitte warten ..
Mitglied: Kirus22
26.06.2007 um 16:06 Uhr
Hallo zusammen,

wie erreiche ich den Folgendes, ich möchte gerne im Kontext Menü vom Windows Explorer den Punkt => Zum Backup hinzufügen , haben. Der Eintrag ist ja auch kein Problem nur wie erreiche ich das jetzt mit einem Skript das er mir den Pfad in eine txt Datei rein schreibt??? Ich hoffe ihr versteht wie ich das meine...

Also noch mal ne übersicht:

Rechtsklick auf eine Datei bzw. Ordner => Dann Zum Backup hinzufügen => Danach sollte der Pfad der Datei/Ordner in einer txt (bks) Datei geschrieben werden...

Danke im Voraus!

Gruß Henning
Bitte warten ..
Mitglied: bastla
26.06.2007 um 16:18 Uhr
Hallo Kirus22!

... wie erreiche ich den Folgendes ...
Am ehesten mit einem neuen Beitrag (hier liest vermutlich außer uns beiden kaum jemand mit) ...

Trotzdem als Tipp (im Kontextmenü eines Ordners):
01.
@echo "%~f1">>"C:\Windows\System32\Datensicherung.bks"
Grüße
bastla
Bitte warten ..
Ähnliche Inhalte
VB for Applications
VBS Datei Auswahl Dialog
gelöst Frage von 133202VB for Applications5 Kommentare

Hallo Ihr, im Thread: konnte ich schon finden, was ich gesucht habe: Jetzt möchte ich allerdings, dass am Anfang ...

Batch & Shell
In Powershell ordner auswählen
gelöst Frage von SaintwolfBatch & Shell8 Kommentare

Hallo zusammen, ich benötige einen tipp wie man auswält das bei der ausgabe nur noch die mit dem neuestem ...

Batch & Shell
In Batchdatei mehrere Dateien auswählen
gelöst Frage von DoppellhelixBatch & Shell7 Kommentare

Hallo, ich habe eine Batchdatei, die mir innerhalb einer Logdatei (txt), die Zeilen neu formatiert. Dieses Script funktioniert hervorragend. ...

VB for Applications
VBS Ordner erstellen - wenn nicht vorhanden!
gelöst Frage von freshman2017VB for Applications1 Kommentar

Hallo, ich würde gerne einen Ordner erstellen, wenn dieser nicht vorhanden ist, nachfolgende VBS funktioniert Ich würde jedoch mit ...

Neue Wissensbeiträge
MikroTik RouterOS

Mikrotik - Lets Encrypt Zertifikate mit MetaROUTER Instanz auf dem Router erzeugen

Anleitung von colinardo vor 5 StundenMikroTik RouterOS4 Kommentare

Einleitung Folgende Anleitung ist aus der Lage heraus entstanden das ein Kunde auf seinem Mikrotik sein Hotspot Captive Portal ...

Sicherheit

Sicherheitslücke in HP-Druckern - Firmware-Updates stehen bereit

Information von BassFishFox vor 6 StundenSicherheit

Ein weiterer Grund, dass Drucker keinerlei Verbindung nach "auswaerts" haben sollen. Unter Verwendung spezieller Malware können Angreifer aus der ...

Administrator.de Feedback

Entwicklertagebuch: Die Startseite wurde überarbeitet

Information von admtech vor 8 StundenAdministrator.de Feedback9 Kommentare

Hallo Administrator User, mit dem Release 5.7 haben wir unsere Startseite überarbeitet und die Beiträge und Fragen voneinander getrennt. ...

Vmware

VMware Desktopprodukte sind verwundbar

Information von Penny.Cilin vor 13 StundenVmware

Die VMware-Anwendungen zum Umgang mit virtuellen Maschinen Fusion, Horizon Client und Workstation sowie die Plattform NSX sind verwundbar. Davon ...

Heiß diskutierte Inhalte
Visual Studio
Vb.net-Tool zum Erzeugen einer Outlook-E-Mail
Frage von ahstaxVisual Studio24 Kommentare

Hallo, ich möchte gerne ein vb.net-Tool schreiben, das am Ende eine Outlook-E-Mail erzeugt. Grundsätzlich ist mir klar, wie das ...

Windows Server
RDP macht Server schneller???
Frage von JaniDJWindows Server16 Kommentare

Hallo Community, wir betrieben seit geraumer Zeit diverse virtuelle Maschinen und Server mit Windows Server 2012. Leider haben wir ...

Windows Netzwerk
Netzwerk Neustrukturierung
Frage von IT-DreamerWindows Netzwerk16 Kommentare

Hallo verehrte Community und Admins, bei uns im Haus steht eine Neustrukturierung an. Dafür benötige ich von euch ein ...

Windows 10
Windows 10 dunkler Bildschirm nach Umfallen
Frage von AkcentWindows 1015 Kommentare

Hallo, habe hier einen Windows 10 Rechner der von einem User umgefallen wurde (Beine übers Knie, an den PC ...