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:
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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 196195
Url: https://administrator.de/forum/vbs-ziel-ordner-leeren-juengste-datei-aus-quell-ordner-kopieren-anzeige-fortschrittsbalken-196195.html
Ausgedruckt am: 05.04.2025 um 21:04 Uhr
1 Kommentar
Hallo ahstax!
Frage 1: Warum VBS (und nicht Batch - dort würde etwas Ungetestetes
in der Art
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:
wobei in der Variablen "Latest" der Dateiname der jüngsten Datei stehen müsste.
[/Edit]
Grüße
bastla
Frage 1: Warum VBS (und nicht Batch - dort würde etwas Ungetestetes
@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%\"
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
[/Edit]
Grüße
bastla