Mehrere Dateien in ein Verzeichnis kopieren und Dateiendung ändern
hallo.
Ich stehe vor folgendem Problem.
Eine Anwendug auf unserem Server erstellt täglich *.dat Dateien, die dann automatisiert umbenannt und in verschiedene externe Datenbanken geschrieben werden.
Da unser ISP aber derzeit ein wenig Probleme mit unserer Internetverbindung hat, kann es schon mal passieren, dass die Dateien nicht in die Datenbank geschrieben werden.
Wenn ich nun die Daten manuell in die Datenbank schreiben möchte, muss ich händisch alle Dateien über den Explorer zusammensuchen, umbenennen und erneut einfügen.
Die Dateien haben vor dem kopieren folgenden Dateinamen: Programmname-0000HEXID-JJJJMMTT.dat (Programmname-00003af0-20090102.dat).
Nach dem kopieren haben sie dann folgendes Format: Programmname-0000HEXID-JJJJMMTT.ZEITSTEMPELdesKOPIERENS.dat.backup (Programmname-00003af0-20090102.2009010214532614.dat.backup)
Da mir der händische Aufwand zu groß ist, würde ich mir gerne eine Batchdatei schreiben, die in dem Verzeichniss alle Dateien eines beliebingen, zusammenhängenden Datums und eines HEXID-Bereiches sucht und danach in ein anderes Verzeichniss kopiert.
Bsp:
Alles Dateien des 24.12.2008 im Bereich von Hex 2800 bis Hex 28af.
Am liebsten wäre mir ja eine Abfrage, welches Datum ich auswählen wollte. Den ID Bereich würde ich dann einfach über eine Textdatei definieren.
Umbenenen der Dateien stellt kein Problem da, nur halt das Filtern und kopieren.
Ist das mit einer Batchdatei möglich oder benötige ich doch eine höhere Programmiersprache?
Danke für die Hilfe.
Ich stehe vor folgendem Problem.
Eine Anwendug auf unserem Server erstellt täglich *.dat Dateien, die dann automatisiert umbenannt und in verschiedene externe Datenbanken geschrieben werden.
Da unser ISP aber derzeit ein wenig Probleme mit unserer Internetverbindung hat, kann es schon mal passieren, dass die Dateien nicht in die Datenbank geschrieben werden.
Wenn ich nun die Daten manuell in die Datenbank schreiben möchte, muss ich händisch alle Dateien über den Explorer zusammensuchen, umbenennen und erneut einfügen.
Die Dateien haben vor dem kopieren folgenden Dateinamen: Programmname-0000HEXID-JJJJMMTT.dat (Programmname-00003af0-20090102.dat).
Nach dem kopieren haben sie dann folgendes Format: Programmname-0000HEXID-JJJJMMTT.ZEITSTEMPELdesKOPIERENS.dat.backup (Programmname-00003af0-20090102.2009010214532614.dat.backup)
Da mir der händische Aufwand zu groß ist, würde ich mir gerne eine Batchdatei schreiben, die in dem Verzeichniss alle Dateien eines beliebingen, zusammenhängenden Datums und eines HEXID-Bereiches sucht und danach in ein anderes Verzeichniss kopiert.
Bsp:
Alles Dateien des 24.12.2008 im Bereich von Hex 2800 bis Hex 28af.
Am liebsten wäre mir ja eine Abfrage, welches Datum ich auswählen wollte. Den ID Bereich würde ich dann einfach über eine Textdatei definieren.
Umbenenen der Dateien stellt kein Problem da, nur halt das Filtern und kopieren.
Ist das mit einer Batchdatei möglich oder benötige ich doch eine höhere Programmiersprache?
Danke für die Hilfe.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 105081
Url: https://administrator.de/contentid/105081
Ausgedruckt am: 26.11.2024 um 05:11 Uhr
5 Kommentare
Neuester Kommentar
Hallo Oli82!
Schematisch könnte ein Batch etwa so aussehen:
Das "echo" in Zeile 23 sorgt dafür, dass das Verschieben der Dateien (zum Testen) zunächst nur angezeigt wird - der Zielordner wird allerdings tatsächlich erstellt.
Wenn Du übrigens die Zeilen 2 und 17 weglässt (oder durch ein vorangestelltes REM auskommentierst) werden alle Dateien im angegebenen ID-Bereich in entsprechende (mit dem Datum gekennzeichnete) Ordner aufgeteilt.
Grüße
bastla
Schematisch könnte ein Batch etwa so aussehen:
@echo off & setlocal
set /p "Datum=Bitte Datum in der Form JJJJMMTT eingeben: "
set "Von=2800"
set "Bis=28af"
set "Quelle=D:\dat-Ordner"
set "Sammel=D:\Sammelordner"
pushd "%Quelle%"
for %%i in (*.dat.backup) do call :ProcessFile "%%i"
popd
goto :eof
:ProcessFile
for /f "tokens=2-3 delims=-." %%a in (%1) do set "Hex=%%a" & set "Dat=%%b"
set Hex=%Hex:~-4%
if "%Dat%" neq "%Datum%" goto :eof
if 0x%Hex% lss 0x%Von% goto :eof
if 0x%Hex% gtr 0x%Bis% goto :eof
set "Ziel=%Sammel%\%Dat%-%Von%-%Bis%"
if not exist "%Ziel%" md "%Ziel%"
echo move %1 "%Ziel%\"
goto :eof
Wenn Du übrigens die Zeilen 2 und 17 weglässt (oder durch ein vorangestelltes REM auskommentierst) werden alle Dateien im angegebenen ID-Bereich in entsprechende (mit dem Datum gekennzeichnete) Ordner aufgeteilt.
Grüße
bastla
<OT>
Ich frage jetzt nicht schon wieder, WTF denn bei diesem vollkommen tz- und ph-freien Wort so schwierig ist, sondern registriere es mal stillschweigend als 388ste Schreibvariante in diesem Forum.
Grüße und voller Erwartungen in das Jahr 2009
Biber
</OT>
Übennenen der Dateien stellt kein Problem da, nur halt das Filtern und kopieren.
Hmm, das Benennen dieser Tätigkeit scheint aber auch leichte Schwierigkeiten zu machen, oder?Ich frage jetzt nicht schon wieder, WTF denn bei diesem vollkommen tz- und ph-freien Wort so schwierig ist, sondern registriere es mal stillschweigend als 388ste Schreibvariante in diesem Forum.
Grüße und voller Erwartungen in das Jahr 2009
Biber
</OT>
Hi Oli82,
für eine Synchronisation kannst du eigentlich jedes beliebige Programm verwenden.
Die Synchronisation läuft idR. über Datum/Zeit. Einige Programme bieten auch noch eine Prüf/Vergleichssumme an.
Das Handling und Feeling ist unterschiedlich. Daher ist es schwer da was zu empfehlen.
Ich persönlich arbeite mit der Explorer-Alternative Directory Opus. Da sind solche Dinge schon mit drin.
Grüße aus Schönberg (Lübeck)
Wolfgang
(Netwolf)
für eine Synchronisation kannst du eigentlich jedes beliebige Programm verwenden.
Die Synchronisation läuft idR. über Datum/Zeit. Einige Programme bieten auch noch eine Prüf/Vergleichssumme an.
Das Handling und Feeling ist unterschiedlich. Daher ist es schwer da was zu empfehlen.
Ich persönlich arbeite mit der Explorer-Alternative Directory Opus. Da sind solche Dinge schon mit drin.
Grüße aus Schönberg (Lübeck)
Wolfgang
(Netwolf)