Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Batch-Copy-Filter für Dateien - Inhalt durchsuchen und selektiv per Filter(unterschiedliche IP-Adressen od. Range) in versch. verzeichnisse kopiert

Frage Entwicklung Batch & Shell

Mitglied: IC-D

IC-D (Level 1) - Jetzt verbinden

28.08.2007, aktualisiert 30.08.2007, 7948 Aufrufe, 5 Kommentare

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
Mitglied: TuXHunt3R
28.08.2007 um 21:10 Uhr
Wie wärs hiermit (falls ich deinen Beitrag richtig interpretiert habe):

01.
 
02.
@echo off 
03.
 
04.
find /i <Pfad Textdatei 1> "IP-Adresse" 
05.
if errorlevel 0 ( 
06.
copy /v /y <Pfad Textdatei 1> <Ziel> 
07.
goto datei2 
08.
) else ( 
09.
goto datei2 
10.
11.
 
12.
 
13.
 
14.
:datei2 
15.
find /i <Pfad Textdatei 2> "IP-Adresse" 
16.
if errorlevel 0 ( 
17.
copy /v /y <Pfad Textdatei 2> <Ziel> 
18.
goto datei3 
19.
) else ( 
20.
goto datei3 
21.
22.
 
23.
 
24.
:datei3 
25.
 
26.
find /i <Pfad Textdatei 3> "IP-Adresse" 
27.
if errorlevel 0 ( 
28.
copy /v /y <Pfad Textdatei 3> <Ziel> 
29.
goto end 
30.
) else ( 
31.
goto end 
32.
33.
 
34.
 
35.
:: usw. 
36.
:: usw. 
37.
:: usw. 
38.
:: usw. 
39.
:: usw. 
40.
 
41.
 
42.
:end 
43.
 

Ist nicht getestet, sollte aber laufen
Bitte warten ..
Mitglied: bastla
28.08.2007 um 21:46 Uhr
Hallo IC-D!

Ich nehme an Du suchst etwas in der Art:
01.
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:\
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):
01.
192.168.2.1=q:\ 
02.
192.168.2.2=q:\ 
03.
112.233.2.1=m:\ 
04.
112.233.2.2=m:\
Ein Batch, um nach dem Muster der oben dargestellten Zeile daraus die gewünschten selektiven Kopieroperationen abzuleiten, könnte dann so aussehen:
01.
@echo off & setlocal 
02.
set "Zu=D:\Zuordnung.txt" 
03.
set "Quelle=c:\LIS-Data-Forw\*.dat" 
04.
 
05.
for /f "usebackq tokens=1,2 delims==" %%i in ("%Zu%") do ( 
06.
    for /f "delims=" %%f in ('findstr /m "%%i" "%Quelle%"') do @echo copy "%%f" "%%j" 
07.
)
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
Bitte warten ..
Mitglied: IC-D
29.08.2007 um 00:49 Uhr
Vielen Danke !!!!

das geht gute

habe jetzt:

qcm3-lis-data-sort2.bat
@echo off & setlocal
set "Zu=C:\Zuordnung.txt"
set "Quelle=c:\test\*.dat"

for /f "usebackq tokens=1,2 delims==" %%i in ("%Zu%") do (
for /f "delims=" %%f in ('findstr /m "%%i" "%Quelle%"') do copy "%%f" "%%j"
)

@echo off


und

c:\Zuordnung.txt

172.21.179.*=c:\test2
172.21.40.*=c:\test3
172.21.50.*=c:\test4


Wie kann ich noch sagen, dass er erst alle IPs ausliest,
und die die ich nicht zuordnen kann woanderst ablegt ?

Danke nochmals allen....

LG
John
Bitte warten ..
Mitglied: bastla
29.08.2007 um 02:16 Uhr
Hallo IC-D!

Wenn es genügt, alle vorher nicht kopierten Dateien als "Rest" in den Zielordner "C:\AlleAnderen" zu kopieren, etwa so (ungetestet):
01.
@echo off & setlocal 
02.
set "Zu=C:\Zuordnung.txt" 
03.
set "Quelle=c:\test\*.dat" 
04.
set "Erledigt=C:\Erledigt.txt" 
05.
set "ZielRest=C:\AlleAnderen" 
06.
 
07.
if exist "%Erledigt%" del "%Erledigt%" 
08.
for /f "usebackq tokens=1,* delims==" %%i in ("%Zu%") do ( 
09.
    for /f "delims=" %%f in ('findstr /m /i "%%i" "%Quelle%"') do copy "%%f" "%%j">nul & echo %%f>>"%Erledigt%" 
10.
11.
for %%f in ("%Quelle%") do findstr /c:"%%f" "%Erledigt%">nul || copy "%%f" "%ZielRest%">nul
Es wird jetzt zusätzlich für die zuordenbaren Dateien ein Eintrag in der "Erledigt"-Liste vorgenommen und danach für alle Quelldateien mit "findstr" überprüft, ob sie in dieser Liste enthalten sind - wenn nicht (||), in das "AlleAnderen"-Verzeichnis kopieren ...

Grüße
bastla
Bitte warten ..
Mitglied: IC-D
30.08.2007 um 12:50 Uhr
Tausen Dank an alle !!

Habe jetzt eine Datei, die alles macht !

sortieren der dateien nach IP-Range, z.B. 17.10.10.x und diese
dann backuped und in den Ordner der Schnittstelle verschiebt !!


tausen dank nochmals !!!!!

LG

Dirk

@echo off
rem wsc 06/2005
rem QCM-DATA-FW.BAT
rem script for qcm-data forward to external systems
rem Path C:\Program Files\QCM3

rem script runs as user labor (with password labor)
rem set frequency and user permissions in: Programs -> Accessories -> System Tools -> Sheduled Tasks
rem set proper acl file permission

rem qcm location: xxxxxx
rem date of activation: 12.04.05 / 14.06.05
rem remote_server: 10.10.45.2 (labor-server)
rem remote_share: qcmanager$
rem remote_optional_folder (optional): # in most cases not needed! baden-baden
rem remote_user: labor
rem remote_password: labor

rem forward qcm results from: (standard) 01.01.1999

rem copy all results to C:\LIS-DATA-ALL\
move C:\"Program Files"\QCM3\LISCom\DataForwardingDir\*.dat C:\LIS-DATA-ALL\


rem Sort the files specified by ip-adress-filter set in file c:\Zuordnung.txt

set "Zu=C:\Zuordnung.txt"
set "Quelle=C:\LIS-DATA-ALL\*.dat"

for /f "usebackq tokens=1,2 delims==" %%i in ("%Zu%") do (
for /f "delims=" %%f in ('findstr /m "%%i" "%Quelle%"') do move "%%f" "%%j"
)


rem Check if backup-protokoll-folder exist

rem check if folders LIS-Data-Baden-Baden already exist, if not creating them
if exist C:\LIS-Data-Baden-Baden\sent\ goto NEXT
md C:\LIS-Data-Baden-Baden\sent\
md C:\LIS-Data-Baden-Baden\sent\save
:NEXT

rem check if folders LIS-Data-Forbach already exist, if not creating them
if exist c:\LIS-Data-Forbach\sent\ goto NEXT
md C:\LIS-Data-Forbach\sent\
md C:\LIS-Data-Forbach\sent\save
:NEXT

rem check if folders LIS-Data-Gernsbach already exist, if not creating them
if exist c:\LIS-Data-Gernsbach\sent\ goto NEXT
md C:\LIS-Data-Gernsbach\sent\
md C:\LIS-Data-Gernsbach\sent\save
:NEXT

rem pause

rem @echo on

rem map the ISOFT-Server-Network-Drive as q:

rem - nur in home version - net use * /del /y

rem - nur in home version net use q: \\10.10.45.2\qcmanager$ /user:labor labor /persistent:no

rem copy the lis-files to specified locations and save them

move C:\LIS-Data-Baden-Baden\*.dat C:\LIS-Data-Baden-Baden\sent\
copy C:\LIS-Data-Baden-Baden\sent\*.dat q:\baden-baden\
move C:\LIS-Data-Baden-Baden\sent\*.dat C:\LIS-Data-Baden-Baden\sent\save\

move C:\LIS-Data-Forbach\*.dat C:\LIS-Data-Forbach\sent\
copy C:\LIS-Data-Forbach\sent\*.dat Q:\Forbach\
move C:\LIS-Data-Forbach\sent\*.dat C:\LIS-Data-Forbach\sent\save\

move C:\LIS-Data-Gernsbach\*.dat C:\LIS-Data-Gernsbach\sent\
copy C:\LIS-Data-Gernsbach\sent\*.dat q:\Gernsbach\
move C:\LIS-Data-Gernsbach\sent\*.dat C:\LIS-Data-Gernsbach\sent\save\

rem cut the mapped drive q:
rem - nur in home version net use * /del /y

rem pause

exit
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Windows 10
Batch: Copy file.txt Lokaler Drucker (1)

Frage von fluluk zum Thema Windows 10 ...

Batch & Shell
gelöst Batch die alle Dateien löscht die Älter als 3 Tage sind (5)

Frage von Azubine zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch Änderungsdatum von Dateien vergleichen und ältere löschen (10)

Frage von 129528 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Google Android
gelöst Android-Handy versehentlich (dauerhaft) gesperrt? (23)

Frage von FA-jka zum Thema Google Android ...

DSL, VDSL
gelöst DSL 200m verlängern (14)

Frage von Angela44 zum Thema DSL, VDSL ...

Batch & Shell
gelöst Ordner und Datei Name gleich (BATCH) (12)

Frage von clragon zum Thema Batch & Shell ...

Windows Server
SBS 2011 Standard virtualisieren (11)

Frage von HeinrichM zum Thema Windows Server ...