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

Auswahl und Kopierscript erstellen mit WSH

Frage Entwicklung Batch & Shell

Mitglied: Robbe83

Robbe83 (Level 1) - Jetzt verbinden

28.03.2013 um 11:43 Uhr, 1460 Aufrufe, 9 Kommentare

Vorab:

Ja ich weiß das es eine sehr einfache Frage ist und es sicherlich 1000'de Anleitungen im Internet gibt aber ich frage trotzdem.

Also bitte erspart mir irgendwelche "doofen" Kommentare - ich steh grade aufm Schlauch was eine Lösung angeht und erhoffe mir auf diese Art und Weise dem Problem Herr zu werden.


Ich möchte mir ein ganz einfaches Script erstellen was folgendes macht:

1. soll eine Abfrage stattfinden (msgbox) wo ich einen von drei Namen eingeben muss

2. je nachdem welcher von den drei namen eingegeben wurde sollen entsprechende Dateien kopiert werden

3. wird keiner der drei namen eingegeben soll die Abfrage erneut starten

4. die Abfrage soll so lange neu starten bis 3 mal entweder kein Name und keiner der drei vorgegebenen Namen eingegeben wurde


Ich hab das ganze schon mit IF/Then/Else versucht - was auch teilweise klappt.
Allerdings kopiert er entweder gar nix oder er kopiert alle Dateien von allein drei Namen.

Mfg

Robert
Mitglied: SlainteMhath
28.03.2013 um 11:46 Uhr
Moin,

wie wär's denn wenn du den Code den du bisher erarbeitet hast einfach mal postest? Es wird dir hier sicher keiner (umsonst ) ein fertiges Script reinstellen.

lg,
Slainte
Bitte warten ..
Mitglied: Robbe83
28.03.2013, aktualisiert um 12:20 Uhr
Ok, das dass keiner umsonst macht ist mir klar .

Hier ist der Code von einem meiner Versuche (kopieren tut es so nix).


01.
 
02.
Dim wsh : Set wsh = CreateObject("WScript.Shell") 
03.
Dim objFSO 
04.
	Set objFSO = CreateObject("Scripting.FileSystemObject") 
05.
Dim b1 
06.
b1 = "name1, name2, name3" 
07.
 
08.
Eingabefenster = InputBox("Bitte Namen eingeben") 
09.
 
10.
If b1 = "name1" Then 
11.
	objFSO.copyfile "\\xxx\xxx\xxx\v1\111.txt", "d:\1.txt" 
12.
	objFSO.copyfile "\\xxx\xxx\xxx\v1\112.txt", "d:\2.txt" 
13.
	objFSO.copyfile "\\xxx\xxx\xxx\v1\113.txt", "d:\3.txt" 
14.
ElseIf b1 = "name2" Then 
15.
	objFSO.copyfile "\\xxx\xxx\xxx\v2\211.txt", "d:\4.txt" 
16.
	objFSO.copyfile "\\xxx\xxx\xxx\v2\212.txt", "d:\5.txt" 
17.
	objFSO.copyfile "\\xxx\xxx\xxx\v2\213.txt", "d:\6.txt" 
18.
ElseIf b1 = "name3" Then 
19.
	objFSO.copyfile "\\xxx\xxx\xxx\v3\311.txt", "d:\7.txt" 
20.
	objFSO.copyfile "\\xxx\xxx\xxx\v3\312.txt", "d:\8.txt" 
21.
	objFSO.copyfile "\\xxx\xxx\xxx\v3\313.txt", "d:\9.txt" 
22.
Else 
23.
InputBox("Bitte Namen eingeben") 
24.
End If 
25.
 
Irgendwie fehlt es mir am grundlegenden Verständis für diese Anweisungen... und so richtig schlau werd ich aus Fachbüchern auch nicht was das angeht.

Mfg

Robert
Bitte warten ..
Mitglied: SlainteMhath
28.03.2013 um 12:05 Uhr
Die Variable b1 brauchst Du nicht. Ersetze "b1" in den If/ElseIf Statments durch "Eingabefenster", dann sollte das Kopieren funktionieren.
Bitte warten ..
Mitglied: bastla
28.03.2013 um 12:15 Uhr
... und verwende "Dim" zusammen mit "Option Explicit" und daher für alle Variablen oder gleich gar nicht ...

Für das Posten von Code gibt es hier übrigens eine passende Formatierung (lässt sich auch nachträglich hinzufügen).

Grüße
bastla
Bitte warten ..
Mitglied: Robbe83
28.03.2013, aktualisiert um 12:23 Uhr
Ok das war ja mal mehr als einfach. Funktioniert super.

Was aber noch gut wäre das wenn ich einen falschen Namen eingebe das er mir zum einen einen Fehler anzeigt und zum anderen dann aber das script nicht beendet sondern mir noch zwei Versuche durch ein Eingabefenster gibt den richtigen Namen einzugeben.

Über

01.
Else 
02.
MsgBox "Falscher Name"
gibt er mir zwar den Fehler aus aber dann beendet er das Script.

Mfg

Robert
Bitte warten ..
Mitglied: SlainteMhath
28.03.2013, aktualisiert um 12:28 Uhr
Das geht mit einer Do/loop Schleife, etwa so:
01.
dim i 
02.
i=0 
03.
do  
04.
  If Eingebefenster = .... 
05.
    ... 
06.
    exit do 
07.
  elseif  ... 
08.
    ... 
09.
    exit do 
10.
  elseif  ... 
11.
    ... 
12.
    exit do 
13.
  Else 
14.
    i=i+1 
15.
    if i=3 then  
16.
        msgbox "Zuviele Fehler!" 
17.
        exit do 
18.
    end if 
19.
  End If 
20.
loop
Bitte warten ..
Mitglied: bastla
28.03.2013 um 12:40 Uhr
... oder auch so:
01.
Versuche = 3 
02.
Do 
03.
    Eingabefenster = InputBox("Bitte Namen eingeben") 
04.
    Select Case LCase(Eingabefenster) 
05.
        Case "name1" 
06.
            objFSO.copyfile "\\xxx\xxx\xxx\v1\111.txt", "d:\1.txt" 
07.
            objFSO.copyfile "\\xxx\xxx\xxx\v1\112.txt", "d:\2.txt" 
08.
            objFSO.copyfile "\\xxx\xxx\xxx\v1\113.txt", "d:\3.txt" 
09.
            Versuche = -1 
10.
        Case "name2" 
11.
            ... 
12.
        Case "name3" 
13.
            ... 
14.
        Case Else 
15.
            Versuche = Versuche - 1 
16.
    End Select 
17.
Loop Until Versuche <= 0 
18.
If Versuche = 0 Then MsgBox "Zu viele Fehler!"
Grüße
bastla
Bitte warten ..
Mitglied: Robbe83
28.03.2013 um 13:08 Uhr
Erstmal Vielen Dank an euch Beide - die Varianten funktionieren super.

Eine Frage hätte ich aber noch.

Ist es grundsätzlich egal ob man das in der Schleife durch If/Then Anweisungen oder durch Case Anweisungen erledigt?

Oder gibt es da bei der einen oder anderen Variante Einschränkungen?

Mfg

Robert

PS: Ich merke schon, ich hab noch verdammt viel übers Scripten/Programmieren zu lernen ;D
Bitte warten ..
Mitglied: SlainteMhath
28.03.2013 um 13:18 Uhr
Ist es grundsätzlich egal ob man das in der Schleife durch If/Then Anweisungen oder durch Case Anweisungen erledigt?

Vom Programmablauf her ist es egal. Schöner finde ich aber eigentl. auch Select...case Konstrukte
Bitte warten ..
Ähnliche Inhalte
Neue Wissensbeiträge
Sicherheits-Tools

Sicherheitstest von Passwörtern für ganze DB-Tabellen

(1)

Tipp von gdconsult zum Thema Sicherheits-Tools ...

Peripheriegeräte

Was beachten bei der Wahl einer USV Anlage im Serverschrank

(8)

Tipp von zetboxit zum Thema Peripheriegeräte ...

Windows 10

Das Windows 10 Creators Update ist auf dem Weg

(6)

Anleitung von BassFishFox zum Thema Windows 10 ...

Heiß diskutierte Inhalte