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, 3551 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 ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Batch & Shell
gelöst Crontab mit Shell Probleme (9)

Frage von mschaedler1982 zum Thema Batch & Shell ...

Batch & Shell
Eventlog Druckjobs mit VBS auslesen (2)

Frage von joni2000de zum Thema Batch & Shell ...

Windows 7
gelöst Sind euch verstärkte Probleme bei Windows 7 Updates aufgefallen? (4)

Frage von RadioHam zum Thema Windows 7 ...

VB for Applications
VBS Script zum versenden mehrerer Verknüpfungen zu Dateien per Lotus Notes

Frage von Sentinel87 zum Thema VB for Applications ...

Heiß diskutierte Inhalte
Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Grafikkarten & Monitore
Tonprobleme bei Fernseher mit angeschlossenem Laptop über HDMI (11)

Frage von Y3shix zum Thema Grafikkarten & Monitore ...

Microsoft Office
Keine Updates für Office 2016 (11)

Frage von Motte990 zum Thema Microsoft Office ...