thomas1972
Goto Top

älteste Datei aus Verzeichnis kopieren und verschieben (Batch geht, aber wie per VBA??)

Hallo,
im Moment behelfe ich mir mit einer batch Datei um im Verzeichnis nach der ältesten datei zu suchen und diese dann
1. zu kopieren
2. dann zu verschieben

echo=off

SETLOCAL ENABLEDELAYEDEXPANSION

echo j| del "c:\Temp\License Info\*.*"  

set pruefung="c:\License Info"  

if exist %pruefung%\*.license* (FOR /F %%F IN ('DIR /B /A-D /O-D /TW %pruefung%\*.license*') DO (SET AKTJOB=%%F)  
echo !AKTJOB!
copy "c:\License Info\!AKTJOB!" "D:\License Info")  


if exist %pruefung%\*.license* (FOR /F %%F IN ('DIR /B /A-D /O-D /TW %pruefung%\*.license*') DO (SET AKTJOB=%%F)  
echo !AKTJOB!
move "c:\License Info\!AKTJOB!" "c:\Temp\License Info")  

wie kann ich dieses per VBA in Access umsetzen?

Content-Key: 205724

Url: https://administrator.de/contentid/205724

Printed on: April 26, 2024 at 19:04 o'clock

Member: bastla
bastla Apr 26, 2013 at 21:30:54 (UTC)
Goto Top
Hallo thomas1972!

Weitgehend ungetestet etwa so:
Sub CopyLicense
Quelle = "C:\License Info"  
Typ = "license"  
Ziel1 = "D:\License Info"  
Ziel2 = "C:\Temp\License Info"  

TypL = Len(Typ)
ODate = Date + 1
Set fso = CreateObject("Scripting.FileSystemObject")  
For Each File In fso.GetFolder(Quelle).Files
    If LCase(Left(fso.GetExtensionName(File.Name), TypL)) = LCase(Typ) Then
        If File.DateLastModified < ODate Then
            ODate = File.DateLastModified
            OFile = File.Path
        End If
     End If
Next
MsgBox OFile & " wurde zuletzt geändert am " & ODate  

If Not fso.FolderExists(Ziel1) Then
    If fso.FileExists(Ziel1) Then
        MsgBox Ziel1 & " ist kein Ordner!"  
        Exit Sub
    Else
        fso.CreateFolder(Ziel1)
    End If
End If

If Not fso.FolderExists(Ziel2) Then
    If fso.FileExists(Ziel2) Then
        MsgBox Ziel2 & " ist kein Ordner!"  
        Exit Sub
    Else
        fso.CreateFolder(Ziel2)
    End If
End If

fso.CopyFile OFile, Ziel1 & "\", True  
Ziel2File = Ziel2 & "\" & fso.GetFile(OFile).Name  
If fso.FileExists(Ziel2File) Then fso.DeleteFile(Ziel2File)
fso.MoveFile OFile, Ziel2File
End Sub
Hinweise:
  • Anstelle des Verschiebens könntest Du auch kopieren und anschließend löschen - damit kann auch auf ein anderes Laufwerk "verschoben" werden.
  • Schreibgeschützte Dateien können nicht überschrieben werden.

Grüße
bastla
Member: thomas1972
thomas1972 Apr 27, 2013 at 14:41:49 (UTC)
Goto Top
Hallo Bastla,

leider funktioniert dieses Script nicht.
Er erkennt zwar bei Zeile 07 den Typ, aber nicht den genauen Dateinamen.

Ziel und Zweck ist es eigentlich in dem Ordner C:\License Info" können mehre Dateien enthalten sein.
Bestimmte haben im Dateinamen License stehen, daher soll entweder wie in deinem Vorschlag die älteste Datei in 2 Verzecihnisse kopiert und dann das org. gelöscht werden
oder eine kopiert und im zweiten Schritt die Datei verschoben werden.

In der MSGBox Zeile 18 erkennt er nicht das File, sondern schreibt nur

Microsoft Access
wurde zuletzt geändert am 28.04.2013
OK


Die eigentliche Datei ist aber von heute.

Vielleicht kannst du nochmal drüber schauen.

Danke, wünsche ein schönes Wochenende.
Member: bastla
bastla Apr 27, 2013 at 14:48:00 (UTC)
Goto Top
Hallo thomas1972!
Bestimmte haben im Dateinamen License stehen
In Deinem Batch oben wird nach Dateien gesucht, in deren Typ "license" enthalten ist ...

Magst du vielleicht das Ergebnis eines
dir "C:\License Info"
posten und dazu angeben, welche Datei konkret gemeint wäre?

Grüße
bastla
Member: thomas1972
thomas1972 Apr 27, 2013 updated at 15:06:22 (UTC)
Goto Top
Die Dateien haben folgenden namen

K00VZF.LICENSE.CACHE_20130427-111554
K00VZF.LICENSE.INFO_20130427-111554
K00VZF.INFO.XML_20130416-1116171

wobei _20130427-111554 immer ein Zeitstempel darstellt.

ich benötige die Cache Datei an 2 verschiedenen orten,
sowie die Info
aber auch die XML
um 1. diese zu Archivieren, aber dann weiter zu entpacken

Wollte das Scrippt 3x erstellen und jeweils nur die Dateinamen sowie Pfade Ziel 1 & 2 anpassen
Member: bastla
bastla Apr 27, 2013 at 19:30:05 (UTC)
Goto Top
Hallo thomas1972!

Ok - jetzt weiß ich zwar, weshalb keine Datei gefunden wurde (dass der Dateiname einen Punkt enthält war Deiner anfänglichen Beschreibung nicht zu entnehmen, und die Suche erfolgt in meinem Ansatz oben in der Extension, also zB in ("CACHE_20130427-111554", wo natürlich der Suchbegriff "license" nicht auftaucht), aber nicht klar ist mir, was es mit der ältesten Datei auf sich hat - daher nochmals die Bitte: Liste alle Dateien des Ordners auf und beschreibe dann anhand dieser Auflistung, welche Datei(en) wohin soll(en) ...

Grüße
bastla