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
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
Please also mark the comments that contributed to the solution of the article
Content-Key: 109882
Url: https://administrator.de/contentid/109882
Printed on: April 24, 2024 at 23:04 o'clock
6 Comments
Latest comment
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