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

VBScript - Sub-Funktion einfügen

Frage Entwicklung VB for Applications

Mitglied: lordiliner

lordiliner (Level 1) - Jetzt verbinden

06.02.2013 um 08:29 Uhr, 1879 Aufrufe, 8 Kommentare

Guten Morgen zusammen,
für ein VBScript soll ich eine Unterfunktion einbauen. Leider bin ich auf diesem Gebiet absolut unwissend und brauche eure Hilfe. Hier die Aufgabenstellung:

Das Script kopiert .txt-Dateien von verschiedenen Ordnern in andere Ordner. Jetzt sollen die verschiedenen Pfade in einer Unterfunktion angegeben werden, damit diese automatisch angezogen werden.
Momentan habe ich diesen Code:

01.
Option Explicit 
02.
 
03.
Dim objFso: Set objFso = WScript.CreateObject("scripting.filesystemobject") 
04.
Const Folder11 = "C:\test\start\ordner1\" 
05.
Const Folder21 = "C:\test\ende\ordner1\" 
06.
Const Folder12 = "C:\test\start\ordner2\" 
07.
Const Folder22 = "C:\test\ende\ordner2\" 
08.
Const Folder13 = "C:\test\start\ordner3\" 
09.
Const Folder23 = "C:\test\ende\ordner3\" 
10.
Dim F1, F2, F3, item1, item2, item3 
11.
  
12.
Set F1 = objFso.GetFolder(Folder11) 
13.
Set F2 = objFso.GetFolder(Folder12) 
14.
Set F3 = objFso.GetFolder(Folder13) 
15.
 
16.
Do 
17.
 For Each item1 In F1.Files 
18.
	If Right(item1.Name, 3) = "txt" Then  
19.
	objFso.CopyFile item1.Path, Folder21, True 
20.
	End If 
21.
 Next 
22.
 For Each item2 In F2.Files 
23.
	If Right(item2.Name, 3) = "txt" Then 
24.
	objFso.CopyFile item2.Path, Folder22, True 
25.
	End If 
26.
 Next 
27.
	For Each item3 In F3.Files 
28.
	If Right(item3.Name, 3) = "txt" Then 
29.
	objFso.CopyFile item3.Path, Folder23, True 
30.
	End If 
31.
Loop
Also in der Do-Schleife soll nicht drei Mal eine If-Funktion sein, sondern eine Unterfunktion, die eben die Pfade angibt.

Über einsteigerfreundliche Tipps und Anregungen würde ich mich sehr freuen.

Liebe Grüße

lordiliner
Mitglied: 106543
06.02.2013 um 08:39 Uhr
Hi,

geschätzte 3 Sec. Suche in Google.de:
http://www.instructables.com/id/VBS-Tutorial-Basics/

Grüße
Exzellius
Bitte warten ..
Mitglied: lordiliner
06.02.2013 um 09:06 Uhr
Hallo Exzellius.

Vielen Dank für den Link. Hab mir mal schnell alles durchgelesen und hab jetzt ein paar Fragen dazu:

Zum Thema Subs steht auf der Seite, dass die so aussehen:
01.
Sub iRule(arg1,arg2,arg3) 
02.
...Script... 
03.
End Sub
Muss ich dann als Argumente die sechs verschiedenen Pfade angeben?
Bei ...Script... muss ich die Zeile mit dem .CopyFile einfügen?
Wie erstelle ich eigentlich ein Argument? Genauso wie eine Variable?

Entschuldigt bitte meine Unwissenheit, aber VBS ist einfach absolutes Neuland für mich.

Liebe Grüße

lordiliner
Bitte warten ..
Mitglied: 106543
06.02.2013 um 09:29 Uhr
Hi du

kein Problem dafür gibts ja Foren
zunächst einmal um auf deine Fragen einzugehen:
bei den Argumenten muss dein Pfad rein ja
dann müsste ein Aufruf für die Sub ca. so aussehen ->
01.
call iRule(Pfad1,Pad2,Pfad3,...)
bei ...Script... muss halt der Inhalt rein, der zusammengefasst werden soll also praktisch dein Copy-Befehl rein

ein Argument ist einfach nur eine Variable die an eine Sub oder Funktion übergeben wird, also brauchst du keine neuen Variablen definieren

Grüße
Exzellius
Bitte warten ..
Mitglied: bastla
06.02.2013, aktualisiert 07.02.2013
Hallo lordiliner!

Wenn es nur je 3 Quell-/Ziel-Ordnerpaare sind, würde ich das eher so anlegen (ungetestet):
01.
Option Explicit 
02.
 
03.
Dim objFso: Set objFso = WScript.CreateObject("scripting.filesystemobject") 
04.
Dim Quelle, Ziel 
05.
Quelle = Array("C:\test\start\ordner1\", "C:\test\start\ordner2\", "C:\test\start\ordner3\") 
06.
Ziel   = Array("C:\test\ende\ordner1\" , "C:\test\ende\ordner2\" , "C:\test\ende\ordner3\" ) 
07.
 
08.
Dim i, File 
09.
For i = 0 To UBound(Quelle) 
10.
    For Each File In objFso.GetFolder(Quelle(i)).Files 
11.
        If LCase(objFso.GetExtensionName(File.Name)) = "txt" Then objFso.CopyFile File.Path, Ziel(i), True 
12.
    Next 
13.
Next
Bei einer größeren Anzahl von Ordnern wäre dann eine Steuerdatei mit jeweils Quelle und Ziel in einer Zeile meine erste Wahl.

Grüße
bastla
Bitte warten ..
Mitglied: lordiliner
07.02.2013 um 09:13 Uhr
Guten Morgen Exzellius und bastla,

dank eurer Hilfe bin ich nach allerhand Tests, Proben und Bastelarbeit zu einer Lösung gekommen.

Dafür danke ich euch beiden recht herzlich.

Viele Grüße

lordiliner
Bitte warten ..
Mitglied: bastla
07.02.2013 um 09:54 Uhr
Hallo lordiliner!

Glückwunsch - als krönenden Abschluss könntest Du Dein funktionierendes Script noch posten ...

Grüße
bastla
Bitte warten ..
Mitglied: 106543
07.02.2013 um 09:56 Uhr
Hi,

Glückwunsch !
war wohl eher zum größten Teil @bastla Werk

Grüße
Exzellius
Bitte warten ..
Mitglied: lordiliner
07.02.2013 um 10:42 Uhr
Hey,

also im Großen und Ganzen ist es eigentlich genau das, wass bastla hier gepostet hat.
Aber dank Exzellius hab ich nach stundenlanger Handwerkerei gestern festgestellt, dass Sub-Prozeduren momentan für mich noch zu kompliziert sind, als dass ich es hinbekommen würde. Aber das kommt noch. Ich bin da ja sehr lernwillig.

Also hier das fertige Script:

01.
Option Explicit  
02.
 
03.
Dim objFso: Set objFso = WScript.CreateObject("scripting.filesystemobject")  
04.
Dim Quelle, Ziel  
05.
Quelle = Array("C:\test\start\ordner1\", "C:\test\start\ordner2\", "C:\test\start\ordner3\") 
06.
Ziel   = Array("C:\test\ende\ordner1\", "C:\test\ende\ordner2\", "C:\test\ende\ordner3\") 
07.
 
08.
Dim i, File  
09.
Do 
10.
For i = 0 To UBound(Quelle)  
11.
    For Each File In objFso.GetFolder(Quelle(i)).Files  
12.
        If LCase(objFso.GetExtensionName(File.Name)) = "txt" Then objFso.CopyFile File.Path, Ziel(i), True  
13.
    Next  
14.
	wscript.sleep 10000 
15.
Next 
16.
Loop
Gruß

lordiliner
Bitte warten ..
Ähnliche Inhalte
VB for Applications
gelöst VbScript: ADODB.Stream: Neue Zeile einfügen (2)

Frage von BirdyB zum Thema VB for Applications ...

VB for Applications
gelöst VBScript und OR (5)

Frage von Invisan zum Thema VB for Applications ...

Batch & Shell
Spoiler in textdatei automatisch über Powershellscript einfügen (5)

Frage von Dr.Byte zum Thema Batch & Shell ...

Batch & Shell
gelöst Sonderzeichen in eine Batch automatisch einfügen (18)

Frage von Dr.Byte zum Thema Batch & Shell ...

Neue Wissensbeiträge
Batch & Shell

Batch zum Zurücksetzen eines lokalen Profils

Tipp von Mr.Error zum Thema Batch & Shell ...

RedHat, CentOS, Fedora

Fedora, RedHat, Centos: DNS-Search Domain setzen

(13)

Tipp von Frank zum Thema RedHat, CentOS, Fedora ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
VPN Tunnel aufbauen (16)

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

Microsoft Office
Saubere HTML aus Word-Dokument (14)

Frage von peterpa zum Thema Microsoft Office ...

Router & Routing
ASUS RT-N18U mit VPN Client hinter Fritzbox - Portforwarding (14)

Frage von marshall75000 zum Thema Router & Routing ...

E-Mail
gelöst Probleme beim E-Mail Empfang (12)

Frage von TommyB83 zum Thema E-Mail ...