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

Frage Entwicklung VB for Applications

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, 4356 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
Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 1 TagLinux

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code (PTI) ist nun für Fedora freigegeben worden. Er ...

Tipps & Tricks

Solutio Charly Updater Fehlermeldung: Das Abgleichen der Dateien in -Pfad- mit dem Datenobject ist fehlgeschlagen

Tipp von StefanKittel vor 1 TagTipps & Tricks

Hallo, hier einmal als Tipp für alle unter Euch die mit der Zahnarztabrechnungssoftware Charly von Solutio zu tun haben. ...

Sicherheit

Meltdown und Spectre: Wir brauchen eine "Abwrackprämie", die die CPU-Hersteller bezahlen

Information von Frank vor 1 TagSicherheit12 Kommentare

Zum aktuellen Thema Meltdown und Spectre: Ich wünsche mir von den CPU-Herstellern wie Intel, AMD oder ARM eine Art ...

Sicherheit

Meltdown und Spectre: Realitätscheck

Information von Frank vor 1 TagSicherheit9 Kommentare

Die unangenehme Realität Der Prozessorfehler mit seinen Varianten Meltdown und Spectre ist seit Juni 2017 bekannt. Trotzdem sind immer ...

Heiß diskutierte Inhalte
Sicherheit
Meltdown und Spectre: Die machen uns alle was vor
Information von FrankSicherheit29 Kommentare

Aktuell sieht es in den Medien so aus, als hätten die Hersteller wie Intel, Microsoft und Co den aktuellen ...

SAN, NAS, DAS
Hilfe beim Einrichten eines Storages (SAN)
gelöst Frage von Vader666SAN, NAS, DAS15 Kommentare

Hallo Admins! Ich bin in einer kleineren Firma und hatte bisher mit dem Thema SAN nur in meiner Ausbildung ...

Monitoring
VPN Performance Zyxel-Fritte
gelöst Frage von HenereMonitoring13 Kommentare

Servus, nachdem ihr mir ja schon so gut helfen konntet, was das VPN zwischen Zyxel USG60W und Fritte 7490 ...

Batch & Shell
Meltdown Microsoft Prüf Script - .zip Datei leider leer
gelöst Frage von MasterBlaster88Batch & Shell13 Kommentare

Hallo zusammen, ich patche gerade unsere Windows Server bzgl. der Meltdown Lücke. Patch vorhanden, Reg Keys gesetzt Um das ...