Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

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 Probleme

Frage Entwicklung VB for Applications

Mitglied: retz12

retz12 (Level 1) - Jetzt verbinden

25.05.2011 um 13:23 Uhr, 3603 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
Batch & Shell
gelöst Hilfe Bei einem vbs Script (19)

Frage von Hattori-Hanzo zum Thema Batch & Shell ...

VB for Applications
gelöst Kommunikation zwischen vbs und javascript (1)

Frage von it4baer zum Thema VB for Applications ...

Batch & Shell
gelöst Vbs programm unabhängig vom Speicherort ausführen (2)

Frage von Markus2016 zum Thema Batch & Shell ...

VB for Applications
gelöst VBS Ordner erstellen - wenn nicht vorhanden! (1)

Frage von freshman2017 zum Thema VB for Applications ...

Neue Wissensbeiträge
Viren und Trojaner

FinFisher: Internetprovider schieben Spitzelopfern Malware unter

(1)

Information von kaiand1 zum Thema Viren und Trojaner ...

Humor (lol)

Wo ist der Fehler auf dem Bild?

(17)

Information von the-buccaneer zum Thema Humor (lol) ...

Windows Update

Offenbar erneutes MS-Update mit Fehlerschleife (2012 R2)

Information von VGem-e zum Thema Windows Update ...

Heiß diskutierte Inhalte
Lizenzierung
Programm soll in verschiedenen Versionen lizenziert sein (20)

Frage von Yanmai zum Thema Lizenzierung ...

Humor (lol)
Wo ist der Fehler auf dem Bild? (17)

Information von the-buccaneer zum Thema Humor (lol) ...

Windows Userverwaltung
Ordner-Rechte für Dom.Admin einschränken? (13)

Frage von kilobyte zum Thema Windows Userverwaltung ...