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, 3649 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 ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Windows 7
gelöst Bereits eingebundener Drucker - IP Adresse lokal auslesen (17)

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

LAN, WAN, Wireless
gelöst TP-Link WA501G als Client einrichten - Keine IP Adresse wir bezogen (14)

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

E-Mail
gelöst Falsche SMTP Server IP Adresse (6)

Frage von laster zum Thema E-Mail ...

Heiß diskutierte Inhalte
Windows Tools
gelöst Aussendienst Datensynchronisierung (12)

Frage von lighningcrow zum Thema Windows Tools ...

Windows Server
Suche passender Treiber (12)

Frage von stolli zum Thema Windows Server ...

Peripheriegeräte
Wlan stört Funkmaus (11)

Frage von Falaffel zum Thema Peripheriegeräte ...

Peripheriegeräte
gelöst USB Festplatte verliert Laufwerksbuchstabe (9)

Frage von cese4321 zum Thema Peripheriegeräte ...