Dateien kleiner 100 Byte mit Sicherungsdatei überschreiben per Batch
Ich habe folgendes Problem:
In mehreren Dateien werden Daten aktualisiert.
Vor diesem Schritt werden die Dateien in ein Sicherungsverzeichnis kopiert.
Wenn die Aktualiserung fehlschlägt, wird eine Datei kleiner 100 Byte erzeugt.
Ist dies der Fall, so sollen diese Dateien gelöscht werden und mit den Sciherungsdateien ersetzt werden.
Alle diese Dateien tragen die Endung .dfd
Wie kann das in einer Batch - Routine realisiert werden?
In mehreren Dateien werden Daten aktualisiert.
Vor diesem Schritt werden die Dateien in ein Sicherungsverzeichnis kopiert.
Wenn die Aktualiserung fehlschlägt, wird eine Datei kleiner 100 Byte erzeugt.
Ist dies der Fall, so sollen diese Dateien gelöscht werden und mit den Sciherungsdateien ersetzt werden.
Alle diese Dateien tragen die Endung .dfd
Wie kann das in einer Batch - Routine realisiert werden?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 44578
Url: https://administrator.de/contentid/44578
Ausgedruckt am: 22.11.2024 um 14:11 Uhr
14 Kommentare
Neuester Kommentar
Hallo,
so ungefähr könnte man es in VBScript lösen, wobei ich nicht genau weis ob auch das Script die Dateien ändern soll und woher die Sicherungsdateien kommen also als Grundgerüst sehen und muss natürlich angepasst werden and deine Umgebung:
Set fso = CreateObject ("Scripting.FileSystemObject")
DateiVerzeichnis = "" ' Quellverzeichnis
Sicherungsverzeichnis = "" ' Zielverzeichnis
Dateigroesse = "100" ' Angabe in Byte
fso.CopyFile DateiVerzeichnis, Sicherungsverzeichnis, vbTrue
Set ZeigerDatei = fso.GetFolder (Sicherungsverzeichnis)
Set Dateien = ZeigerDatei.Files
For Each Datei In Dateien
If Datei.Size < Dateigroesse Then
Datei.Delete
fso.CopyFile DateiVerzeichnis, Sicherungsverzeichnis, vbTrue ' Hier dann dei Pfade anpassen wenn nötig
Else
End If
Next
Gruß MCSE_Cheffe
so ungefähr könnte man es in VBScript lösen, wobei ich nicht genau weis ob auch das Script die Dateien ändern soll und woher die Sicherungsdateien kommen also als Grundgerüst sehen und muss natürlich angepasst werden and deine Umgebung:
Set fso = CreateObject ("Scripting.FileSystemObject")
DateiVerzeichnis = "" ' Quellverzeichnis
Sicherungsverzeichnis = "" ' Zielverzeichnis
Dateigroesse = "100" ' Angabe in Byte
fso.CopyFile DateiVerzeichnis, Sicherungsverzeichnis, vbTrue
Set ZeigerDatei = fso.GetFolder (Sicherungsverzeichnis)
Set Dateien = ZeigerDatei.Files
For Each Datei In Dateien
If Datei.Size < Dateigroesse Then
Datei.Delete
fso.CopyFile DateiVerzeichnis, Sicherungsverzeichnis, vbTrue ' Hier dann dei Pfade anpassen wenn nötig
Else
End If
Next
Gruß MCSE_Cheffe
Also:
DateiVerzeichnis = "c:\daten"
Hier musst Du "c:\daten\*.*" schreiben damit alle Dateien gemeint sind!DateiVerzeichnis = "c:\daten"
Sicherungsverzeichnis =
"I:\safety"
Hier "I:\safety\" am ende wird der Backslash noch benötigt"I:\safety"
Wie kann man das Skript aus einer Batch -
Datei afrufen?
Das ging doch mit irgendeiner exe und dem
Skript als Parameter, oder?
Wie lautet die EXE, die ich starten
müßte?
Datei afrufen?
Das ging doch mit irgendeiner exe und dem
Skript als Parameter, oder?
Wie lautet die EXE, die ich starten
müßte?
Und zum Aufrufen brauchst du keine Batchdatei kann man so aufrufen (Doppelklick oder in der cmd einfach Dateiname.vbs).
Gruß MCSE_Cheffe
Hallo CrazyCat!
Oder vielleicht doch Batch:
HTH
bastla
[Edit] Sorry Biber, war geringfügig schneller, weil Du's schöner und gleich richtig gemacht hast [/Edit]
[Edit2] So versteh' ich's inzwischen auch [/Edit2]
Oder vielleicht doch Batch:
for %%i in (C:\Daten\*.dfd) do if %%~zi LSS 100 copy /y "I:\safety\%%~nxi" c:\daten >nul 2>nul
HTH
bastla
[Edit] Sorry Biber, war geringfügig schneller, weil Du's schöner und gleich richtig gemacht hast [/Edit]
[Edit2] So versteh' ich's inzwischen auch [/Edit2]
Moin CrazyCat,
Als Batch wiederum würde das so aussehen:
[Der Batch ECHOed im Moment nur, was er tun würde. Nach dem Testen das @echo entfernen.
Gruß
Biber
[Edit] @bastla
Uuups... ich habe es genau umgekehrt herum verstanden:
AUS dem Sicherungsverzeichnis "I:\Safety" die Daten wiederherstellen IN das Datenverzeichnis c:\Daten.....?!?
[Edit2] Passt schon... war nur optisch irreführend.. [/Edit2]
[/Edit]
Als Batch wiederum würde das so aussehen:
:: ------snipp RestoreIfUpdateFailed.bat
@for %%i in (c:\Daten\*.dfd) do @if exist i:\Safety\%%~nxi @if %%~zi LSS 100 @ECHO copy /y i:\Safety\%%~nxi %%i >nul
:: ------snapp RestoreIfUpdateFailed.bat
Gruß
Biber
[Edit] @bastla
AUS dem Sicherungsverzeichnis "I:\Safety" die Daten wiederherstellen IN das Datenverzeichnis c:\Daten.....?!?
[Edit2] Passt schon... war nur optisch irreführend.. [/Edit2]
[/Edit]
Moin CrazyCat,
MSCE_Cheffe scheint grad nicht in der Nähe zu sein.
Kannst Du bitte mal den aktuellen Stand des VBS-Schnipsels posten bitte?
Dann können wir eben noch diesen Schönheitsfehler wegschmirgeln und danach den Beitrag mal schließen.
Falls Du den Fehler inzwischen selbst behoben hast, stell das Musterskript doch bitte trotzdem hier rein.
Danke
Biber
MSCE_Cheffe scheint grad nicht in der Nähe zu sein.
Kannst Du bitte mal den aktuellen Stand des VBS-Schnipsels posten bitte?
Dann können wir eben noch diesen Schönheitsfehler wegschmirgeln und danach den Beitrag mal schließen.
Falls Du den Fehler inzwischen selbst behoben hast, stell das Musterskript doch bitte trotzdem hier rein.
Danke
Biber