Batch-Copy-Filter für Dateien - Inhalt durchsuchen und selektiv per Filter(unterschiedliche IP-Adressen od. Range) in versch. verzeichnisse kopiert
Hallo zusammen,
mein erster Weg war leider zu direkt.
Ich benötige ein kleines Batch-Programm,
dass aus einem Verzeichnis die enthaltenen Dateien, die im Text eine unterschiedliche IP-Adresse
enthält, in versch. Verzeichnisse kopiert: Also einen Filter
Wenn die Datei die IP-Adresse xxx.xxx.xxx.xxx enthält,
dann soll die Datei, in Laufwerk z,y od. k kopiert werden
Ablauf:
c:\LIS-Data-Forw\ - Verzeichniss
- hier liegen ca. 100 Dateien tägl. mit o.a. Inhalt.
datei.Endung ist: *.dat(ASCII)
Ich habe z.B. 4 gemappte Laufwerke:
Der Inhalt der Dateien – alle mit der Endung *.dat- müssen durchsucht werden
Nach bestimmten IP-Adressen und dann kopiert und zugeordnet werden.
Bsp: Varianten
Haus: Variable: mögliche IP-Adresse: kopiert in verzeichniss:
KH 1-1 set kh 1-1 = 192.168.2.1 q:\
KH 1-2 SET KH 1-2 = 192.168.2.2 q:\
KH 2-1 set kh 2-1 = 112.233.2.1 m:\
KH 2-2 Set kh 2-2 = 112.233.2.2 m:\
besser altern.
Ich gebe in 4 Files(.txt) die IP-Adressen der Häuser
an und die Batch liest die Variablen aus.
Oder die IP-Adressen unterscheiden sich nur in den ersten beiden points:
H1 = 192.168.x.x
H2 = 192.161.x.x
und verwenden diese dann als Filter für die
selektive copy anweisung der dateien.
Danke!
Batch-Filter: Datei-Inhalt durchsuchen und selektiv per Filter(unterschiedliche IP-Adresse) in versch. verzeichnisse kopiert
mein erster Weg war leider zu direkt.
Ich benötige ein kleines Batch-Programm,
dass aus einem Verzeichnis die enthaltenen Dateien, die im Text eine unterschiedliche IP-Adresse
enthält, in versch. Verzeichnisse kopiert: Also einen Filter
Wenn die Datei die IP-Adresse xxx.xxx.xxx.xxx enthält,
dann soll die Datei, in Laufwerk z,y od. k kopiert werden
Ablauf:
c:\LIS-Data-Forw\ - Verzeichniss
- hier liegen ca. 100 Dateien tägl. mit o.a. Inhalt.
datei.Endung ist: *.dat(ASCII)
Ich habe z.B. 4 gemappte Laufwerke:
Der Inhalt der Dateien – alle mit der Endung *.dat- müssen durchsucht werden
Nach bestimmten IP-Adressen und dann kopiert und zugeordnet werden.
Bsp: Varianten
Haus: Variable: mögliche IP-Adresse: kopiert in verzeichniss:
KH 1-1 set kh 1-1 = 192.168.2.1 q:\
KH 1-2 SET KH 1-2 = 192.168.2.2 q:\
KH 2-1 set kh 2-1 = 112.233.2.1 m:\
KH 2-2 Set kh 2-2 = 112.233.2.2 m:\
besser altern.
Ich gebe in 4 Files(.txt) die IP-Adressen der Häuser
an und die Batch liest die Variablen aus.
Oder die IP-Adressen unterscheiden sich nur in den ersten beiden points:
H1 = 192.168.x.x
H2 = 192.161.x.x
und verwenden diese dann als Filter für die
selektive copy anweisung der dateien.
Danke!
Batch-Filter: Datei-Inhalt durchsuchen und selektiv per Filter(unterschiedliche IP-Adresse) in versch. verzeichnisse kopiert
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 67332
Url: https://administrator.de/forum/batch-copy-filter-fuer-dateien-inhalt-durchsuchen-und-selektiv-per-filterunterschiedliche-ip-adressen-od-67332.html
Ausgedruckt am: 17.04.2025 um 00:04 Uhr
5 Kommentare
Neuester Kommentar
Wie wärs hiermit (falls ich deinen Beitrag richtig interpretiert habe):
Ist nicht getestet, sollte aber laufen
@echo off
find /i <Pfad Textdatei 1> "IP-Adresse"
if errorlevel 0 (
copy /v /y <Pfad Textdatei 1> <Ziel>
goto datei2
) else (
goto datei2
)
:datei2
find /i <Pfad Textdatei 2> "IP-Adresse"
if errorlevel 0 (
copy /v /y <Pfad Textdatei 2> <Ziel>
goto datei3
) else (
goto datei3
)
:datei3
find /i <Pfad Textdatei 3> "IP-Adresse"
if errorlevel 0 (
copy /v /y <Pfad Textdatei 3> <Ziel>
goto end
) else (
goto end
)
:: usw.
:: usw.
:: usw.
:: usw.
:: usw.
:end
Ist nicht getestet, sollte aber laufen
Hallo IC-D!
Ich nehme an Du suchst etwas in der Art:
Der obige One-Liner ist zum Testen von der Kommandozeile gedacht. Zur Verwendung innerhalb einer Batchdatei ist jeweils %%i zu schreiben. Das "@echo" dient dazu, den Kopierbefehl nur anzuzeigen, aber nicht auszuführen. "findstr" erlaubt auch die Angabe mehrerer, durch Leerzeichen getrennter, Suchkriterien, sodass also beide IP-Adressen in einem Durchgang überprüft werden können.
Deinen wirklich vielfältigen Beispieldaten entnehme ich zumindest folgende Grundidee: In einer Textdatei ("Zuordnung.txt") wird die Zuordnung zwischen Suchbegriff und Ziellaufwerk in der folgenden Form hinterlegt (welchen Sinn und Zweck die "Häuser" dabei haben sollen, erschließt sich mir derzeit noch nicht):
Ein Batch, um nach dem Muster der oben dargestellten Zeile daraus die gewünschten selektiven Kopieroperationen abzuleiten, könnte dann so aussehen:
Anzumerken wäre, dass Dateien, welche mehrere der überprüften IP-Adressen enthalten, auch mehrmals kopiert werden (für jede Übereinstimmung wird ein Kopiervorgang ausgeführt).
Grüße
bastla
Ich nehme an Du suchst etwas in der Art:
for /f "delims=" %i in ('findstr /m "192.168.2.1 192.168.2.2" c:\LIS-Data-Forw\*.dat') do @echo copy "%i" q:\
Deinen wirklich vielfältigen Beispieldaten entnehme ich zumindest folgende Grundidee: In einer Textdatei ("Zuordnung.txt") wird die Zuordnung zwischen Suchbegriff und Ziellaufwerk in der folgenden Form hinterlegt (welchen Sinn und Zweck die "Häuser" dabei haben sollen, erschließt sich mir derzeit noch nicht):
192.168.2.1=q:\
192.168.2.2=q:\
112.233.2.1=m:\
112.233.2.2=m:\
@echo off & setlocal
set "Zu=D:\Zuordnung.txt"
set "Quelle=c:\LIS-Data-Forw\*.dat"
for /f "usebackq tokens=1,2 delims==" %%i in ("%Zu%") do (
for /f "delims=" %%f in ('findstr /m "%%i" "%Quelle%"') do @echo copy "%%f" "%%j"
)
Grüße
bastla
Hallo IC-D!
Wenn es genügt, alle vorher nicht kopierten Dateien als "Rest" in den Zielordner "C:\AlleAnderen" zu kopieren, etwa so (ungetestet):
Grüße
bastla
Wenn es genügt, alle vorher nicht kopierten Dateien als "Rest" in den Zielordner "C:\AlleAnderen" zu kopieren, etwa so (ungetestet):
@echo off & setlocal
set "Zu=C:\Zuordnung.txt"
set "Quelle=c:\test\*.dat"
set "Erledigt=C:\Erledigt.txt"
set "ZielRest=C:\AlleAnderen"
if exist "%Erledigt%" del "%Erledigt%"
for /f "usebackq tokens=1,* delims==" %%i in ("%Zu%") do (
for /f "delims=" %%f in ('findstr /m /i "%%i" "%Quelle%"') do copy "%%f" "%%j">nul & echo %%f>>"%Erledigt%"
)
for %%f in ("%Quelle%") do findstr /c:"%%f" "%Erledigt%">nul || copy "%%f" "%ZielRest%">nul
Grüße
bastla