ahstax
Goto Top

Vbs, Ziel-Ordner leeren, jüngste Datei aus Quell-Ordner kopieren, Anzeige Fortschrittsbalken

vbs, Ziel-Ordner leeren, jüngste Datei aus Quell-Ordner kopieren, Anzeige Fortschrittsbalken

Hallo,

ich möchte einen bestehenden Zielordner leeren, dann aus einem QuellOrdner eine Datei ersteDatei.bla und die jüngste Datei jüngsteDatei.xyz in den Zielordner kopieren. Beim Kopieren soll ein Fortschrittsbalken (muss nicht der Gesamtfortschritt sein) angezeigt werden.

Das mit dem Löschen und Kopieren hab ich hinbekommen, ist ein VBS-File:

Dim fNewest
Dim ofilesys

set ofilesys=CreateObject("Scripting.FileSystemObject")  
set oFolder=createobject("scripting.filesystemobject").getfolder("D:\Sicherung\Backup1")  
For Each aFile In oFolder.Files
    If fNewest = "" Then  
        Set fNewest = aFile
    Else
        If fNewest.DateCreated < aFile.DateCreated Then
            Set fNewest = aFile
        End If
    End If
Next

ofilesys.deleteFile ("D:\Sicherung\Backup_fuer_Band\*.*")  

'MsgBox "Neueste Datei: " + fNewest  
ofilesys.CopyFile "D:\Sicherung\Backup1\Backup1.vbm", "D:\Sicherung\Backup_fuer_Band\"  
ofilesys.CopyFile fNewest, "D:\Sicherung\Backup_fuer_Band\"  
'MsgBox "Kopieren abgeschlossen"  

set ofilesys = nothing
set oFolder = nothing
set fNewest = nothing

Ich hab keine Ahnung, ob das ein sinnvoler/eleganter Code ist. Ich bin eher ein Copy/Paste/Anpasen-Programmierer, ohne zu wissen, was im einzelnen passiert. Aber wie gesagt, soweit funktioniert der Code. Nun hätte ich gerne einen Fortschrittsbalken angezeigt. Ist das möglich/machbar? Wenn ja, wie?

Vielen Dank für Eure Antworten schon jetzt.
Vorweihnachtliche Grüße,
Andreas

Content-Key: 196195

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

Ausgedruckt am: 29.03.2024 um 13:03 Uhr

Mitglied: bastla
bastla 23.12.2012 aktualisiert um 10:52:53 Uhr
Goto Top
Hallo ahstax!

Frage 1: Warum VBS (und nicht Batch - dort würde etwas Ungetestetes face-wink in der Art
@echo off & setlocal
set "Quelle=D:\Sicherung\Backup1"  
set "Ziel="D:\Sicherung\Backup_fuer_Band"  

set "Latest="  
for /f "delims=" %%i in ('dir /b /a-d /o-d "%Quelle%"') do set "Latest=%%i"  
if not defined Latest (echo Keine Datei gefunden! & pause & goto :eof)
del /q /f "%Ziel%"  
copy "%Quelle%\Backup1.vbm" "%Ziel%\"  
copy "%Quelle%\%Latest%" "%Ziel%\"  
genügen)?

Frage 2: Abgesehen davon, dass VBS ja unmittelbar keine grafische Oberfläche anbietet und daher am ehesten noch eine HTA-Lösung in Frage käme - was sollte der Fortschrittsbalken darstellen, worauf soll er sich beziehen, und wie lange kann denn die ganze Aktion dauern, dass es überhaupt Sinn hätte, einen solchen Balken zu verwenden?

[Edit] Sollte es nur um eine Fortschrittsanzeige für den Kopiervorgang gehen, könntest Du in VBS etwas in der Art versuchen:
Set App = CreateObject("Shell.Application")  
For Each File In App.Namespace("D:\Sicherung\Backup1").Items  
    If LCase(File.Name) = LCase(Latest) Then App.Namespace("D:\Sicherung\Backup_fuer_Band").CopyHere File  
Next
wobei in der Variablen "Latest" der Dateiname der jüngsten Datei stehen müsste.
[/Edit]

Grüße
bastla