Dateien speziell sortieren VBS
Jetzt wird es ein wenig hagelig.... ;)
Es sind alle gefragt, die sich mit VB-Script auskennen.
Ich habe einen Ordner in dem verschiedene Dateien folgendes Namenformat haben:
file.123 => erstellt am 19.02.2009
file.143 => erstellt am 20.02.2009
file.645 => erstellt am 23.02.2009
datei2.183 => erstellt am 19.02.2009
datei2.182 => erstellt am 20.02.2009
datei2.189 => erstellt am 23.02.2009
meine.183 => erstellt am 19.02.2009
meine.284 => erstellt am 20.02.2009
meine.543 => erstellt am 23.02.2009
Es gibt also immer Dateien, die gleich anfangen und jeweils verschiedene Dateiendungen haben. Das Erstellungsdatum ist auch verschieden.
Nun möchte ich alle Dateien in diesem Ordner nach >> "file.*; datei2.*; meine.*" << sortieren und davon jeweils von der entspr. neuesten Datei (file.645, datei2.189 & meine.543) den Dateinamen eine bestehende Logdatei schreiben lassen.
Leider habe ich schon zig Foren durchgeforstet und wurde nicht wirklich fündig.
Mag auch daran liegen, das ich nicht der VBS Hirsch bin.
Bin schonmal soweit, das ich "CreateObject" nutzen und irgend ein Pattern setzten muss.
Aber wie, ist mir schleierhaft.
LG
deeboo
Es sind alle gefragt, die sich mit VB-Script auskennen.
Ich habe einen Ordner in dem verschiedene Dateien folgendes Namenformat haben:
file.123 => erstellt am 19.02.2009
file.143 => erstellt am 20.02.2009
file.645 => erstellt am 23.02.2009
datei2.183 => erstellt am 19.02.2009
datei2.182 => erstellt am 20.02.2009
datei2.189 => erstellt am 23.02.2009
meine.183 => erstellt am 19.02.2009
meine.284 => erstellt am 20.02.2009
meine.543 => erstellt am 23.02.2009
Es gibt also immer Dateien, die gleich anfangen und jeweils verschiedene Dateiendungen haben. Das Erstellungsdatum ist auch verschieden.
Nun möchte ich alle Dateien in diesem Ordner nach >> "file.*; datei2.*; meine.*" << sortieren und davon jeweils von der entspr. neuesten Datei (file.645, datei2.189 & meine.543) den Dateinamen eine bestehende Logdatei schreiben lassen.
Leider habe ich schon zig Foren durchgeforstet und wurde nicht wirklich fündig.
Mag auch daran liegen, das ich nicht der VBS Hirsch bin.
Bin schonmal soweit, das ich "CreateObject" nutzen und irgend ein Pattern setzten muss.
Aber wie, ist mir schleierhaft.
LG
deeboo
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 109882
Url: https://administrator.de/contentid/109882
Ausgedruckt am: 22.11.2024 um 14:11 Uhr
6 Kommentare
Neuester Kommentar
Hallo deeboo!
Ich würde dafür eher einen Batch nehmen (in VBS sind es etwa doppelt soviele Zeilen ):
Bitte beachten: Die Ordnerangabe in Zeile 2 muss immer mit "\" enden.
Grüße
bastla
Ich würde dafür eher einen Batch nehmen (in VBS sind es etwa doppelt soviele Zeilen ):
@echo off & setlocal
set "Ordner=D:\Ein Ordner\"
set "Dateien=file datei2 meine"
set "Log=D:\Neueste.log"
if exist "%Log%" del "%Log%"
for %%i in (%Dateien%) do call :ProcessFile "%%i"
goto :eof
:ProcessFile
set N=
for /f "delims=" %%a in ('dir /b /on "%Ordner%%~1.*" 2^>nul') do set "N=%%a"
if defined N >>"%Log%" echo %N%
if not defined N >>"%Log%" echo Keine %1-Datei gefunden!
goto :eof
Grüße
bastla
Hallo deeboo!
Als VBS sähe es etwa so (leider habe ich momentan etwas weniger Zeit, daher nur die unkommentierte Fassung):
Grüße
bastla
ein richtiger Scripthirsch.
Ja, gib mir Tiernamen ... Als VBS sähe es etwa so (leider habe ich momentan etwas weniger Zeit, daher nur die unkommentierte Fassung):
Ordner = "D:\Ein Ordner"
Dateien = "file datei2 meine"
LogDatei = "D:\Neueste.log"
Set fso = CreateObject("Scripting.FileSystemObject")
Set Folder = fso.GetFolder(Ordner)
DateiArten = Split(LCase(Dateien))
For Each DateiArt In DateiArten
D = ""
M = "000"
For Each File In Folder.Files
If LCase(fso.GetBaseName(File.Name)) = DateiArt Then
Ext = fso.GetExtensionName(File.Name)
If Ext > M Then
D = File.Name
M = Ext
End If
End If
Next
If D <> "" Then
Res = Res & vbCrLF & D
Else
Res = Res & vbCrLF & "Es wurde keine """ & DateiArt & """-Datei gefunden!"
End If
Next
fso.CreateTextFile(LogDatei, True).Write Mid(Res, 3)
bastla