oli82
Goto Top

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.

Content-ID: 105081

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

Ausgedruckt am: 26.11.2024 um 05:11 Uhr

NetWolf
NetWolf 03.01.2009 um 11:30:49 Uhr
Goto Top
Hallo,

ich würde einfach ein Synchronisier-Programm nehmen.

Grüße aus Schönberg (Lübeck)
Wolfgang
(Netwolf)
bastla
bastla 03.01.2009 um 23:54:50 Uhr
Goto Top
Hallo Oli82!

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
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
Biber
Biber 04.01.2009 um 20:38:14 Uhr
Goto Top
<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>
Oli82
Oli82 04.01.2009 um 21:14:49 Uhr
Goto Top
@NetWolf

Welches Programm würdest du vorschlagen, dass diese Filter unterstützt?

@bastla
Dein Script werde ich morgen gleich mal testen.

Dank euch für die Hilfe!
NetWolf
NetWolf 05.01.2009 um 13:52:51 Uhr
Goto Top
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)