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

IP-Adresse an unbestimmter Stelle einer Zeile auslesen

Frage Entwicklung Batch & Shell

Mitglied: jschneider

jschneider (Level 1) - Jetzt verbinden

11.02.2008, aktualisiert 19:27 Uhr, 3655 Aufrufe, 11 Kommentare

Hallo Gemeinde


ich stehe mal wieder auf dem Schlauch...

ich würde gerne IP-Adressen aus Zeilen auslesen, die aber an unbestimmten Stellen auftauchen können.

Das sähe dann in etwa so aus


01.
irgendwas1 irgendwas2 10.11.12.13 irgendwas3 
02.
irgendwas1 irgendwas2  irgendwas3 10.11.12.14 irgendwas4
schlussendlich brauch ich immer irgendwas 1 und die IP-Adresse zurück.
Irgendwas1 ist ja einfach, aber da die IP mal an dritter , mal an vierter Stelle auftauchen kann . . .

Irgendwas2 und irgendwas3 können nur folgende Zustände haben
-Paused
-error printing (einiger fall für irgendwas2 und irgendwas3)
-idle

kleinen Tipp bitte ?

<edit>
die IP-Adresse fängt IMMER mit einer 10. an
</edit>
Mitglied: miniversum
11.02.2008 um 15:24 Uhr
Versuchs mal so:
@echo off
FOR /F "tokens=1,3,4 delims= " %%a in (Datei.txt) do set irgendwas1=%%a & set M1=%%b & set M2=%%c
if [%M1:~0,3%]==[10.] (set IP=%M1%) else (set IP=%M2%)
echo %irgendwas1%
echo %IP%
Bitte warten ..
Mitglied: jschneider
11.02.2008 um 16:18 Uhr
hmm das sieht prima aus. allerdings funktioniert jetzt so meine Schleife nicht mehr in der ich diverse Dateien aus einem Verzeichnis ermittle und diese Funktion gegen all diese Dateien fahre. So wie im code unten wird nur noch die erste Zeile abgearbeitet...

ist bestimmt was total doofes
01.
@echo off & setlocal 
02.
cls 
03.
rem ************************************************************* 
04.
rem *** 
05.
rem ***  Globale Einstellungen 
06.
rem ***    
07.
set Basedir=\\Servername\PrintScripte\PMC-Merge 
08.
set IPrintExportDir=%Basedir%\Iprint-Exports 
09.
set MergeFile=%BaseDir%\temp1.txt 
10.
if exist %MergeFile% del %MergeFile%  
11.
rem  
12.
rem                                                           *** 
13.
rem ************************************************************* 
14.
 
15.
 
16.
rem *** 
17.
rem *** Liste der Exportdateien ermitteln 
18.
 
19.
if NOT Exist "%IPrintExportDir%" ( 
20.
  echo kein Iprint Export Verzeichnis gefunden 
21.
 goto :eof 
22.
23.
 
24.
for %%i in (%IPrintExportDir%\*.txt) do ( 
25.
  echo %%i >>  %MergeFile% 
26.
  call :ExportFileRead  %%i 
27.
28.
 
29.
goto fertig 
30.
 
31.
:ExportFileRead 
32.
rem *** 
33.
rem *** Aus den ermittelten Dateien die Werte auslesen 
34.
rem  
35.
set "iPrintExportFile=%1" 
36.
rem echo bearbeite datei %iPrintExportFile% 
37.
 
38.
FOR /F "skip=3 tokens=1,3,4 delims= " %%a in (%iPrintExportFile%) do set iPrintName=%%a & set M1=%%b & set M2=%%c 
39.
if [%M1:~0,3%]==[10.] (set IP=%M1%) else (set IP=%M2%) 
40.
echo %IP%;-;-;-;%iPrintName% >> %MergeFile% 
41.
 
42.
 
43.
 
44.
:fertig 
45.
echo fertig 
46.
 
47.
 
48.
 
49.
 
Bitte warten ..
Mitglied: bastla
11.02.2008 um 17:08 Uhr
Hallo jschneider!

Du musst das Unterprogramm ":ExportFileRead" beenden, indem Du eine Zeile
01.
goto :eof
(vor ":fertig") einfügst.

Alternative: Ersetze "goto fertig" einfach durch
01.
echo fertig 
02.
goto :eof
Grüße
bastla
Bitte warten ..
Mitglied: jschneider
11.02.2008 um 17:46 Uhr
das hilft leider nicht


die freundlicherweise von miniversum gepostete funktion an sich gibt mir nur eine Zeile aus
(so wie sie ist getestet anhand einer gefüllten datei )


die Zeile ist zwar richtig, aber eben nur eine Zeile
Bitte warten ..
Mitglied: miniversum
11.02.2008 um 18:05 Uhr
Ups das war ungetestet von mir. So wird nur jede Zeile verarbeitet.
Versuchs mal so:
01.
@echo off & setlocal 
02.
cls 
03.
rem ************************************************************* 
04.
rem *** 
05.
rem ***  Globale Einstellungen 
06.
rem ***    
07.
set Basedir=\\Servername\PrintScripte\PMC-Merge 
08.
set IPrintExportDir=%Basedir%\Iprint-Exports 
09.
set MergeFile=%BaseDir%\temp1.txt 
10.
if exist %MergeFile% del %MergeFile%  
11.
rem  
12.
rem                                                           *** 
13.
rem ************************************************************* 
14.
 
15.
 
16.
rem *** 
17.
rem *** Liste der Exportdateien ermitteln 
18.
 
19.
if NOT Exist "%IPrintExportDir%" ( 
20.
  echo kein Iprint Export Verzeichnis gefunden 
21.
 goto :eof 
22.
23.
 
24.
for %%i in (%IPrintExportDir%\*.txt) do ( 
25.
  echo %%i >>  %MergeFile% 
26.
  rem echo bearbeite datei %%i 
27.
  for /F "skip=3 delims=" %%j in ("%%i") do (   
28.
    call :ExportFileReadLine  "%%j" 
29.
30.
31.
 
32.
goto:fertig 
33.
 
34.
:ExportFileReadLine  
35.
rem *** 
36.
rem *** Aus den ermittelten Dateien die Werte auslesen 
37.
rem  
38.
set "iPrintExportFile=%~1" 
39.
 
40.
 
41.
FOR /F "tokens=1,3,4 delims= " %%a in (%iPrintExportFile%) do set iPrintName=%%a & set M1=%%b & set M2=%%c 
42.
if [%M1:~0,3%]==[10.] (set IP=%M1%) else (set IP=%M2%) 
43.
echo %IP%;-;-;-;%iPrintName% >> %MergeFile% 
44.
goto:eof 
45.
 
46.
 
47.
:fertig 
48.
echo fertig
miniversum
Bitte warten ..
Mitglied: jschneider
11.02.2008 um 18:24 Uhr
entweder es liegt daran, dass ich heute schon um 04:00 aufgetanden bin und ich nur noch Bahnhof verstehe oder dir ist ist da ein Fehler unterlaufen...

du hast jetzt in dem Teil, in dem ich die Dateien aus dem Verzeichnis ermittelt habe eine Funktion hinzugefügt, die ich nicht verstehe und die m.E. auch nichts mit den Zeilen innerhalb dieser Dateien zu tun hat.

Der Weg ist mir klar.. Dateien ermitteln, dann aus jeder ermittelten Datei erste Zeile auslesen und für jede zeile die Funktion durchführen

%%i ist ja der Dateiname aber %%j irgendwie auch
d.h. nicht der Dateiinhalt, sondern der Dateiname wird übergeben

01.
for %%i in (%IPrintExportDir%\*.txt) do ( 
02.
  echo %%i >>  %MergeFile% 
03.
  echo bearbeite datei %%i 
04.
  for /F "skip=3 delims=" %%j in ("%%i") do (   
05.
    echo i ist %%i 
06.
    echo j ist %%j 
07.
    pause 
08.
    call :ExportFileReadLine  "%%j" 
09.
10.
11.
 
Bitte warten ..
Mitglied: jschneider
11.02.2008 um 18:33 Uhr
ah ich hab was gefunden..

anstelle

01.
  for /F "skip=3 delims=" %%j in ("%%i") do (  
bringt mich

01.
  for /f "skip=3 delims=" %%j in (%%i) do (  
etwas weiter .. (ausgabe der ersten Zeile für die gesucht werden soll

aber:

die :ExportFileReadLine arbeitet dann nichtmehr gegen eine Datei, sondern gegen die Zeilen


01.
 FOR /F "tokens=1,3,4 delims= " %%a in (%iPrintExportFile%) do set iPrintName=%%a & set M1=%%b & set M2=%%c 
ich versuche mich mal weiter
Bitte warten ..
Mitglied: jschneider
11.02.2008 um 18:44 Uhr
jetzt gehts

01.
@echo off & setlocal 
02.
cls 
03.
rem ************************************************************* 
04.
rem *** 
05.
rem ***  Globale Einstellungen 
06.
rem ***    
07.
set Basedir=\\vshqprt01\q$\PrintScripte\PMC-Merge 
08.
set IPrintExportDir=%Basedir%\Iprint-Exports 
09.
set MergeFile=%BaseDir%\temp1.txt 
10.
if exist %MergeFile% del %MergeFile%  
11.
rem  
12.
rem                                                           *** 
13.
rem ************************************************************* 
14.
 
15.
 
16.
rem *** 
17.
rem *** Liste der Exportdateien ermitteln 
18.
 
19.
if NOT Exist "%IPrintExportDir%" ( 
20.
  echo kein Iprint Export Verzeichnis gefunden 
21.
 goto :eof 
22.
23.
 
24.
for %%i in (%IPrintExportDir%\*.txt) do ( 
25.
  echo %%i >>  %MergeFile% 
26.
  echo bearbeite datei %%i 
27.
  for /f "skip=3 delims=" %%j in (%%i) do (   
28.
rem  for /F "skip=3 delims=" %%j in ("%%i") do (  
29.
   echo i ist %%i 
30.
    echo j ist %%j 
31.
    echo ----------------------------- 
32.
     
33.
    call :ExportFileReadLine  "%%j" 
34.
35.
36.
 
37.
goto:fertig 
38.
 
39.
:ExportFileReadLine  
40.
rem *** 
41.
rem *** Aus den ermittelten Dateien die Werte auslesen 
42.
rem  
43.
set "iPrintExportLine=%~1" 
44.
echo %iPrintExportLine% 
45.
 
46.
 
47.
FOR /F "tokens=1,3,4 delims= " %%a in ("%iPrintExportLine%") do set iPrintName=%%a & set M1=%%b & set M2=%%c 
48.
if [%M1:~0,3%]==[10.] (set IP=%M1%) else (set IP=%M2%) 
49.
echo %IP%;-;-;-;%iPrintName% >> %MergeFile% 
50.
goto:eof 
51.
 
52.
 
53.
:fertig 
54.
echo fertig 
55.
 
56.
 
Bitte warten ..
Mitglied: bastla
11.02.2008 um 18:48 Uhr
Hallo jschneider!

Sorry - ich hatte oben nur ganz kurz drübergelesen ...

... und gratuliere, dass Du es selbst ausgetüftelt hast.

Sicherer wird es übrigens, wenn Du die entsprechende "for"-Zeile so schreibst:
01.
for /f "usebackq skip=3 delims=" %%j in ("%%i") do (
Dadurch bleibt der Dateiname in "%%i" unter Anführungszeichen - wichtig, falls er einmal Leerzeichen enthalten sollte.

Grüße
bastla
Bitte warten ..
Mitglied: jschneider
11.02.2008 um 19:05 Uhr
... und gratuliere, dass Du es selbst
ausgetüftelt hast.

Mühsamm nährt sich das Eichhörnchen - dank diesem Forum aber immer schneller

Sicherer wird es übrigens, wenn Du die
entsprechende "for"-Zeile so
schreibst:
01.
for /f "usebackq skip=3 
02.
> delims=" %%j in ("%%i") do ( 
03.
> 
Dadurch bleibt der Dateiname in
"%%i" unter Anführungszeichen
- wichtig, falls er einmal Leerzeichen
enthalten sollte.

direkt so umgesetzt

danke an euch beide nochmal !
Bitte warten ..
Mitglied: Biber
11.02.2008 um 19:26 Uhr
Moin jschneider,

jetzt, wo ja schon eine funktionierende Lösung vorliegt, kann ich ja gefahrlos einen kleinen Verschlankungsvorschlag machen.

01.
:: ..... bis zu dieser Zeile  "for %%i in (%IPrintExportDir%\*.txt) do ("  ...wie oben 
02.
for %%i in (%IPrintExportDir%\*.txt) do ( 
03.
  echo %%i >>  %MergeFile% 
04.
  echo bearbeite datei %%i 
05.
   for /f "tokens=1,*" %%x in ('more +3 "%%i" ^|findstr /C:" 10."') do ( 
06.
       for %%a in (%%y) do @if "%%a" LEQ "11." echo %%a;-;-;-;%%x >> %MergeFile% 
07.
 ) ) 
08.
echo fertig
Grüße
Biber
Bitte warten ..
Ähnliche Inhalte
Windows 7
gelöst Bereits eingebundener Drucker - IP Adresse lokal auslesen (17)

Frage von harald.schmidt zum Thema Windows 7 ...

Entwicklung
gelöst Public IP Adresse auf Weltkarte (3)

Frage von brammer zum Thema Entwicklung ...

LAN, WAN, Wireless
Keine zuweisung einer IP-Adresse über DHCP in verbundung mit WLAN (3)

Frage von mbraeunlein zum Thema LAN, WAN, Wireless ...

LAN, WAN, Wireless
gelöst WAN öffentliche IP Adresse (6)

Frage von kenjineumann zum Thema LAN, WAN, Wireless ...

Neue Wissensbeiträge
Sicherheits-Tools

Sicherheitstest von Passwörtern für ganze DB-Tabellen

(1)

Tipp von gdconsult zum Thema Sicherheits-Tools ...

Peripheriegeräte

Was beachten bei der Wahl einer USV Anlage im Serverschrank

(9)

Tipp von zetboxit zum Thema Peripheriegeräte ...

Windows 10

Das Windows 10 Creators Update ist auf dem Weg

(6)

Anleitung von BassFishFox zum Thema Windows 10 ...

Heiß diskutierte Inhalte