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 Probleme

Frage Entwicklung VB for Applications

Mitglied: retz12

retz12 (Level 1) - Jetzt verbinden

25.05.2011 um 13:23 Uhr, 3570 Aufrufe, 10 Kommentare

Werte Programmierer,
Ich bin nicht so der ober Programmierer, deshalb stehe ich diesmal wieder mal auf der Leitung!
Ich möchte mit dem Script überprüfen, ob eine gewisse Datei (%username%.htm) in einem gewissen Laufwerk vorhanden ist.
Wenn die Datei vorhanden ist, dann soll überprüft werden, ob ein gewisser Ordner vorhanden ist, wenn dieser vorhanden ist, dann soll er die gefundene Datei (%username%.htm) in diesen Ordner kopieren, wenn der Ordner nicht vorhanden ist, dann den Ordner (test) erstellen und dann wieder die Datei in den Ordner Test kopieren!
Leider schaffe ich es nicht das in ein vernünftiges Script zu packen.

Anbei mein Script

01.
' *** Initialze objects *** 
02.
Set WSHShell = WScript.CreateObject("WScript.Shell") 
03.
Set fs = CreateObject("Scripting.filesystemobject") 
04.
 
05.
' *** aktualisieren *** 
06.
	If fs.Fileexists(wshshell.ExpandEnvironmentStrings("D:\%username%.htm")) goto :copy 
07.
	End If 
08.
:copy	 
09.
	If fs.Folderxists(wshshell.ExpandEnvironmentStrings("D:\test")) = true then 
10.
		fs.CopyFile wshshell.ExpandEnvironmentStrings("D:\%username%.htm"), wshshell.ExpandEnvironmentStrings("D:\test\%username%.htm") 
11.
	else 
12.
		fs.CreateFolder wshshell.ExpandEnvironmentStrings("D:\test") 
13.
		fs.CopyFile wshshell.ExpandEnvironmentStrings("D:\%username%.htm"), wshshell.ExpandEnvironmentStrings("D:\test\%username%.htm") 
14.
	End If 
15.
	End If
Mitglied: MrTrebron
25.05.2011 um 13:54 Uhr
Hi

probier mal
01.
 
02.
' *** Initialze objects *** 
03.
Set WSHShell = WScript.CreateObject("WScript.Shell") 
04.
Set fs = CreateObject("Scripting.filesystemobject") 
05.
 
06.
' *** aktualisieren *** 
07.
	If fs.Fileexists(wshshell.ExpandEnvironmentStrings("D:\%username%.htm")) Then 
08.
			If fs.Folderexists("D:\test") = true then 
09.
			fs.CopyFile wshshell.ExpandEnvironmentStrings("D:\%username%.htm"), wshshell.ExpandEnvironmentStrings("D:\test\%username%.htm") 
10.
		Else 
11.
			fs.CreateFolder wshshell.ExpandEnvironmentStrings("D:\test") 
12.
			fs.CopyFile wshshell.ExpandEnvironmentStrings("D:\%username%.htm"), wshshell.ExpandEnvironmentStrings("D:\test\%username%.htm") 
13.
		End If 
14.
	End If
Gruß
Norbert
Bitte warten ..
Mitglied: retz12
25.05.2011 um 14:28 Uhr
Hi,
Danke für die rasche Rückmeldung.
Es funktioniert wirklich - Vielen Dank

sieht eigentlich eh ganz einfach aus, nur bin ich nicht darauf gekommen, wie ich es lösen könnte.

Danke nochmal
Bitte warten ..
Mitglied: retz12
27.05.2011 um 17:00 Uhr
Ich bin heute auf ein Problem gekommen!!
Es wird nämlich beim 2.mal aufrufen der Datei eine Fehlermeldung ausgegeben, dass es die Datei schon einmal gibt.
Fehler tritt auf in Zeile 11 im oberen Script!!
Woran kann das liegen.

So wie es aussieht probiert er den Ordner nochmals anzulegen, jedoch ist dieser schon vorhanden.

Ich würde nochmal um deine / Eure hilfe ersuchen.
Danke
Bitte warten ..
Mitglied: MrTrebron
27.05.2011 um 17:13 Uhr
Hi

ich kann den Fehler nicht Nachstellen.

Hast du noch was im Script verändert?

Gruß
Norbert
Bitte warten ..
Mitglied: retz12
27.05.2011 um 17:23 Uhr
Nein habe ich nicht.
Ich habe nur die Pfade geändert, da es im Netzwerk läuft und bei jedem Anmelden die Datei überschrieben werden soll.
Die Datei wird von einem freigegebenen Netzlaufwerk ins lokale Userverzeichnis kopiert!
Der Fehler tritt auf, wenn der Ordner schon vorhanden ist! Auch wenn ich die Dabei im Ordner lösche, kommt der Fehler.
Wenn ich den Ordner lösche, dann funktioniert es wieder.
Keine Ahnung, warum das nicht funktionert.

Bei mir lokal zu hause nicht im Netzwerk funktioniert das einwandfrei.
Bitte warten ..
Mitglied: bastla
27.05.2011 um 17:28 Uhr
Hallo retz12 und MrTrebron!

Eine etwas wartungsfreundlichere Variante - vielleicht geht's ja damit :
01.
' *** Initialze objects *** 
02.
Set WSHShell = WScript.CreateObject("WScript.Shell") 
03.
Set fs = CreateObject("Scripting.filesystemobject") 
04.
 
05.
SourceFile = WSHShell.ExpandEnvironmentStrings("D:\%username%.htm") 
06.
TargetFolder = "D:\test\" 
07.
 
08.
' *** aktualisieren *** 
09.
If Right(TargetFolder, 1) <> "\" Then TargetFolder = TargetFolder & "\" 
10.
If fs.FileExists(SourceFile) Then 
11.
    If Not fs.FolderExists(TargetFolder) Then fs.CreateFolder TargetFolder 
12.
    fs.CopyFile SourceFile, TargetFolder 
13.
End If
Grüße
bastla
Bitte warten ..
Mitglied: retz12
27.05.2011 um 17:49 Uhr
Irgendwo ist in diesem Script auch noch ein Fehler

zeile 11
Char 47

Pfad nicht gefunden.


Genau genommen möchte ich folgenden Order erstellen, bzw. die Datei in den Ordner kopieren
C:\Users\%username%\AppData\Roaming\Microsoft\Signatures

Jedoch lässt er mir das nur einmal zu. Beim überschreiben kommt dann die Fehlermeldung!
Bitte warten ..
Mitglied: bastla
27.05.2011 um 20:57 Uhr
Hallo retz12!

Vorweg: Für den genannten Pfad sollte die Zeile 6
TargetFolder = WSHShell.ExpandEnvironmentStrings("%appdata%\Microsoft\Signatures")
lauten.
Nachvollziehbar wäre noch, wenn es den Ordner "Microsoft" nicht gäbe - dann würde tatsächlich der "Pfad nicht gefunden", allerdings müsste es den Fehler dann bereits beim erstmaligen (und jedem weiteren) Lauf des Scripts geben ...

Vorbeugen ließe sich dem etwa so:
01.
Set WSHShell = WScript.CreateObject("WScript.Shell") 
02.
Set fs = CreateObject("Scripting.filesystemobject") 
03.
 
04.
PathParts = Split(WSHShell.ExpandEnvironmentStrings("%appdata%\Microsoft\Signatures"), "\") 
05.
 
06.
TargetPath = PathParts(0) & "\" 
07.
For i = 1 To UBound(PathParts) 
08.
    TargetPath = TargetPath & PathParts(i) & "\" 
09.
    If Not fs.FolderExists(TargetPath) Then fs.CreateFolder TargetPath 
10.
Next
Grüße
bastla
Bitte warten ..
Mitglied: retz12
29.05.2011 um 10:05 Uhr
Hallo bastla,

Danke für die Hilfe beim Programmieren!!

Ich habs jetzt es fehlte nur der Zusatz "WSHShell.ExpandEnvironmentStrings" in der Zeile 6
Was bewirkt dieser Teil eigentlich?


Aber danke nochmal
Bitte warten ..
Mitglied: bastla
29.05.2011 um 10:13 Uhr
Hallo retz12!
Was bewirkt dieser Teil eigentlich?
Damit wird der Inhalt einer CMD-Systemvariablen (wie zB "%temp%" oder "%windir%) ausgelesen - für den Pfad "D:\test" wäre das nicht erforderlich, für einen Pfad unterhalb von "%appdata%" natürlich sehr wohl ...

Grüße
bastla
Bitte warten ..
Ähnliche Inhalte
Linux
Probleme beim Autostart Icewiesel im Vollbildmodus (1)

Frage von Thomas91 zum Thema Linux ...

Microsoft Office
Probleme mit Bilddarstellung im Publisher 2016 (8)

Frage von takvorian zum Thema Microsoft Office ...

LAN, WAN, Wireless
gelöst Mikrotik Access Point - Probleme mit Multi-SSID und Vlan (7)

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

Neue Wissensbeiträge
Peripheriegeräte

Was beachten bei der Wahl einer USV Anlage im Serverschrank

(2)

Tipp von zetboxit zum Thema Peripheriegeräte ...

Windows 10

Das Windows 10 Creators Update ist auf dem Weg

(5)

Anleitung von BassFishFox zum Thema Windows 10 ...

Administrator.de Feedback

Tipp: Ungelöste Fragen ohne Antwort in Tickeransicht farblich hinterlegen

Tipp von pattern zum Thema Administrator.de Feedback ...

Viren und Trojaner

Neue Magazin Ausgabe: Malware und Angriffe abwehren

Information von Frank zum Thema Viren und Trojaner ...

Heiß diskutierte Inhalte
Windows Systemdateien
Warum System auf "C:" (29)

Frage von DzumoPRO zum Thema Windows Systemdateien ...

LAN, WAN, Wireless
Cisco SG200: Auf bestimmtem vLAN bestimmte TCP-Ports sperren (16)

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

Windows Server
gelöst Update BackupExec 2015 auf 2016 führt zu SQL-Server Problem (16)

Frage von montylein1981 zum Thema Windows Server ...

Cloud-Dienste
gelöst Bitcoins minen über Nacht? (16)

Frage von 1410640014 zum Thema Cloud-Dienste ...