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, 7942 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
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Erkennung und -Abwehr
Spam mit eigener Domain (12)

Frage von NoobOne zum Thema Erkennung und -Abwehr ...