Top-Themen

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 Dateien kopieren welche älter sind als xx und beginnen mit xx

Mitglied: staga75

staga75 (Level 1) - Jetzt verbinden

14.12.2011, aktualisiert 11:04 Uhr, 4374 Aufrufe, 9 Kommentare

Hallo Leute

ich bin neu hier und habe bereits eine Frage (hoffe doch das Ihr mir das nicht übel nehmt). Nach langer Suche im Forum und im Internet (leider nichts gefunden) poste ich hier meine Frage. Ich bin was VBS betrifft ein absoluter Anfänger daher bitte ich um Rücksicht sollte meine Frage zu lächerlich sein.

Also ich habe per Vorlage ein Script erstellt welches mir alle Dateien in einem Ordner die älter sind als xx Tage in einen anderen Ordner verschiebt (funktioniert sogar). Nun möchte ich zusätzlich die Funktion einbaue das nur Dateien verschoben werden welche mit einer bestimmten Zeichenfolge beginnen (z.B. 4052test*.*). Ergo es werden Dateien verschoben welche älter sind als xx Tage und beginnen mit 4052test*.*

Ich wäre dankbar wenn mir jemand weiterhelfen kann. Anbei noch das Script welches erweitert werden soll:

Script:
01.
Dim fso, files, file, datei 
02.
datei=date-2 
03.
Set fso = CreateObject ("scripting.FileSystemObject") 
04.
set files = fso.getFolder("C:\Temp\test1").files 
05.
For Each file In files 
06.
if file.datelastmodified < datei Then 
07.
fso.MoveFile file, "C:\Temp\test2\"  
08.
End If 
09.
next
gruss Staga


[Edit Biber] Codeformatiert [/Edit]
Mitglied: bastla
14.12.2011 um 09:53 Uhr
Hallo staga75 und willkommen im Forum!

Zwei Tipps vorweg:
  • Der Variablennamen "datei" ist als Bezeichnung für einen Datumswert eher irreführend (besser wäre etwa "Vergleichsdatum").
  • Wenn Du Deinen Code etwas formatierst (damit ist nicht nur die forumseigene Formatierungsmöglichkeit), sondern vor allem die Verwendung von Einrückungen gemeint, ist er (auch für Dich) besser lesbar.

Das Ergebnis könnte dann so aussehen:
01.
Option Explicit 
02.
Dim fso, files, file, Vergleichsdatum 
03.
Vergleichsdatum = Date - 2 
04.
 
05.
Set fso = CreateObject ("scripting.FileSystemObject") 
06.
Set files = fso.GetFolder("C:\Temp\test1").Files 
07.
For Each file In files 
08.
    If file.datelastmodified < datei Then 
09.
        If Left(file.Name, 8) = "4052test" Then 
10.
            fso.MoveFile file, "C:\Temp\test2\" 
11.
        End If 
12.
    End If 
13.
Next
Wartbarer wird's noch, wenn Du den Suchstring (und dessen Länge) sowie die Ordner vorweg festlegst:
01.
Option Explicit 
02.
Dim fso, files, file, Vergleichsdatum, Quelle, Suchstring, Ziel, SL 
03.
Quelle = "C:\Temp\test1" 
04.
Suchstring = "4052test" 
05.
Ziel = "C:\Temp\test2\" 
06.
Vergleichsdatum = Date - 2 
07.
 
08.
SL = Len(Suchstring) 
09.
Set fso = CreateObject ("scripting.FileSystemObject") 
10.
Set files = fso.GetFolder(Quelle).Files 
11.
For Each file In files 
12.
    If file.datelastmodified < datei Then 
13.
        If Left(file.Name, SL) = Suchstring Then 
14.
            fso.MoveFile file, Ziel 
15.
        End If 
16.
    End If 
17.
Next
Zu beachten wäre, dass Groß-/Kleinschreibung im Suchstring berücksichtigt werden - dem ließe sich so:
Suchstring = LCase("4052test")
und
        If LCase(Left(file.Name, SL)) = Suchstring Then
beikommen - Alternative: Verwendung von "StrComp()"

Grüße
bastla
Bitte warten ..
Mitglied: staga75
14.12.2011 um 10:22 Uhr
Hallo bastla

Ich bedanke mich für die Hinweise wie auch für das Script. Man lernt eben immer dazu. Habe die Anpassungen bereits vorgenommen und es funktioniert wunderbar.

Vielen Dank für die schnelle Hilfeleistung

gruss
Staga
Bitte warten ..
Mitglied: staga75
14.12.2011 um 10:36 Uhr
Hallo bastla

Noch eine kleine Frage (habe vergessen das noch ein weiterer Copy befehl dazukommt):

Nachdem die Dateien ins Test2 Verzeichnis kopiert wurden würde ich gerne alle Dateien welche mit dem Namen 4052test* beginnen und die Endung .xml haben ins Verzeichnis Test3 kopieren.

Mit dem Befehl:
If left(file.Name, 6) = "1033603*.xml* Then
fso.CopyFile file, "C:\Temp\test3\"

funktioniert das nicht.

Vielleicht kannst du mir nochmals helfen.

Danke
Staga
Bitte warten ..
Mitglied: Biber
14.12.2011 um 11:08 Uhr
Moin staga75,

ich will mich ja nicht einmengen, aber....

Zitat von staga75:
Nachdem die Dateien ins Test2 Verzeichnis kopiert wurden würde ich gerne alle Dateien welche mit dem Namen 4052test* beginnen
und die Endung .xml haben ins Verzeichnis Test3 kopieren.

Mit dem Befehl:
If left(file.Name, 6) = "1033603*.xml* Then
fso.CopyFile file, "C:\Temp\test3\"

funktioniert das nicht.

Ööööhm......

Aus aktuellem Anlass:
Lass dir nicht auf irgendwelchen Weihnachtsmärkten von Fremden irgendwelche Umsonst-Glühweine aufdrängen.
Die können unerwartet krasse Nebenwirkungen haben.

Grüße
Biber
Bitte warten ..
Mitglied: bastla
14.12.2011 um 11:12 Uhr
Hallo staga75!

Es gäbe auch ein "Right()" oder, besser, "fso.GetExtensionName(file.Name)" ...

... und die Angabe der Zeichenanzahl - sowohl in "Left()" wie in "Right()" - ist tatsächlich ernst gemeint ...

Grüße
bastla
Bitte warten ..
Mitglied: staga75
14.12.2011 um 11:25 Uhr
Hallo

Also das mit der Funktion fso.GetExtensionName(filename) = "XML" habe ich bereits gefunden, danke. Jedoch kann ich die Funktion nicht einbauen. Ich habe einfach zu wenig VB Kentnisse

Der Ablauf sollte so aussehen:
Dateien von test1 die älter sind als 2 Tage und beginnen mit 4025test werden kopiert in den Ordner test2 (funktioniert ja soweit). Danach sollen alle Dateien welche älter sind als 2 Tage, beginnen mit 4025test und die Endung "XML" haben vom Ordner Test2 in den Ordner Test3 kopiert werden.

gruss
Staga
Bitte warten ..
Mitglied: staga75
14.12.2011 um 11:40 Uhr
Nachtrag: Ich habe das Script angepasst jedoch geht das so nicht. Es erscheint immer ein Fehler bei der Ausführung bei der Linie 14.

Script:
01.
Dim fso, files, file, datei, Suchstring, SL 
02.
Suchstring="103360" 
03.
datei=date-2 
04.
SL = Len(Suchstring) 
05.
Set fso = CreateObject ("scripting.FileSystemObject") 
06.
set files = fso.getFolder("C:\Temp\test1").files 
07.
For Each file In files 
08.
if file.datelastmodified < datei Then 
09.
If Left(file.Name, 6) = "103360" Then 
10.
fso.CopyFile file, "C:\Temp\test2\" 
11.
End If 
12.
End If 
13.
next 
14.
Dim fso, files, file, datei, Suchstring, SL 
15.
Suchstring="103360" 
16.
datei=date-2 
17.
SL = Len(Suchstring) 
18.
Set fso = CreateObject ("scripting.FileSystemObject") 
19.
set files = fso.getFolder("C:\Temp\test2").files 
20.
For Each file In files 
21.
if file.datelastmodified < datei Then 
22.
If Left(file.Name, 6) = "103360" And fso.GetExtensionName(filename) = "XML" Then 
23.
fso.CopyFile file, "C:\Temp\test3\" 
24.
End If 
25.
End If 
26.
next
Bitte warten ..
Mitglied: bastla
14.12.2011 um 11:44 Uhr
Hallo staga75!

Hinsichtlich der Zeile 14 gibt es eine einfache Lösung: Lass sie weg ...

Grüße
bastla
Bitte warten ..
Mitglied: staga75
14.12.2011 um 13:57 Uhr
Danke für den Hinweis. Funktioniert tip top.

gruss
Staga
Bitte warten ..
Ähnliche Inhalte
Windows Tools

Robocopy aktuellste Dateien kopieren und ältere Dateien löschen

gelöst Frage von semperf1delisWindows Tools4 Kommentare

Hallo zusammen, ich möchte gerne meine Backupdateien die auf einer internen Festplatte des Backupservers abgelegt werden auf meine externe ...

Basic

VBS Script: Dateien älter als x Tage löschen

gelöst Frage von KnuefiBasic4 Kommentare

Hallo zusammen, ich habe eine Frage. Ich bin auf der Suche nach ein Script das Dateien älter als x ...

Batch & Shell

Wenn XX freier speicher dann goto

gelöst Frage von functionstrutBatch & Shell4 Kommentare

Hallo :-) ich hänge hier irgendwie an einer kleinigkeit und bekomme es nicht hin. ich möchte das wenn 10GB ...

Microsoft

Dateien kopieren

gelöst Frage von alex53842Microsoft2 Kommentare

Hallo zusammen, wir haben hier ein sehr tolles Phänomen. Eines unserer Dokumentenarchive hat einen kleinen Fehler. Es wurde eingerichtet ...

Neue Wissensbeiträge
Windows 7

Windows 7 - Server 2008 R2: Exploit für Total Meltdown verfügbar

Information von kgborn vor 18 StundenWindows 7

Kleine Information für Administratoren, die für die Updates von Windows 7 SP1 und Windows Server 2008 R2 SP1 verantwortlich ...

Sicherheit

Zero Day-Schwachstelle im Internet Explorer - wird von APT bereits ausgenutzt

Information von kgborn vor 1 TagSicherheit

Im Kernel des Internet Explorer scheint es eine Zero Day-Lücke zu geben, die von staatlichen Akteuren (APT) im Rahmen ...

Microsoft
Folder Security Viewer-Lizenzen zu gewinnen
Information von kgborn vor 1 TagMicrosoft

Ich nehme das Thema mal in Absprache mit Frank hier auf, da es für den einen oder anderen Administrator ...

Hardware

Feueralarm killt Festplatten in Rechenzentrum - führt zu größerem Ausfall

Information von kgborn vor 1 TagHardware12 Kommentare

Noch ein kleiner Beitrag für Administratoren, die in Rechenzentren aktiv sind - so als Fingerzeig. Denn es gibt Szenarien, ...

Heiß diskutierte Inhalte
Linux
Linux Server oder Windows Server - lohnt eine Umstellung auf Linux und ebenso basierende SW bei einer langfristigen Planung?
Frage von motus5Linux27 Kommentare

Wir brauchen bei uns einen neuen Server. Dieser wird als Fileserver, Domäne Controller sowie Exchange Server verwendet. Wir versuchen ...

C und C++
Frage1 C Programmierung-Makefile Frage2 PHP-Programmierung HTTP-Fehler 404
Frage von KatalinaC und C++23 Kommentare

Hallo, ich habe 2 Fragen, die nichts miteinander zu tun haben aber mit denen ich mich gerade beschäftige: 1. ...

LAN, WAN, Wireless
Watchguard T15 VPN Einrichtung
gelöst Frage von thomasjayLAN, WAN, Wireless21 Kommentare

Hallo zusammen, wir möchten gerne über unsere Watchguard T15 einen VPN-Tunnel (Mobile VPN with IPSec) einrichten! Als Client nutzen ...

DSL, VDSL
ISP Wechsel auf Vodefone Koax, Gebäudeverkabelung nur per Cat 7
gelöst Frage von wusa88DSL, VDSL18 Kommentare

Hallo Zusammen, ich bin momentan bei Mnet als Glasfaser Kunde und möchte Preis/Leistungs-Technisch zu Kabel Deutschland / Vodafone wechseln. ...