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

Batch Datei soll aus Textdatei string auslesen

Frage Entwicklung Batch & Shell

Mitglied: NeuNeu

NeuNeu (Level 1) - Jetzt verbinden

27.02.2013, aktualisiert 17:55 Uhr, 1679 Aufrufe, 7 Kommentare

Hallo,

voll Freude habe ich diesen Link gefunden:
http://www.administrator.de/frage/batch-datei-soll-aus-textdatei-string ...

Das klappt auch bestens, wenn ich eine Textdatei explizit angebe.
Ich möchte es aber für viele solcher Dateien machen.
Daher habe ich eine For Schleife gebastelt und meine alles richtig gemacht zu haben,
aber ich kriege nie das Datum (das steht bei mir in Zeile 38 an Position 42) meiner
aktuellen Datei. Irgendwie hat die Variable immer noch das Datum der letzten Datei (17.07.2011).
Obwohl die Zeile set ln immer das richtige Datum der aktuellen Datei enthält, hat
%ln:~42,10% immer das falsche Datum:
01.
for /f "delims=" %%i in ('dir /b') do ( 
02.
  
03.
        echo %%i 
04.
	echo ln=%ln% 
05.
 
06.
 
07.
	for /f "delims=" %%j in ('findstr /n /v "akjgriarg" "%Pfad%"\%%i^|findstr "^38:"') do @Set "ln=%%j"  
08.
	set ln  
09.
	echo %ln:~42,10% 
10.
 
11.
	echo bla 
12.
	echo %%i 
13.
	echo ln=%ln% 
14.
REM	set ln= 
15.
	 
16.
	echo %ln:~42,10% 
17.
	echo start 
18.
	echo Die Variable ln enthält "%ln%" 
19.
 
20.
	echo hier 
21.
)
Habe schon mit set ln= rumgespielt - hilft nix. Ich werd noch wahnsinnig!
Bin für jede Hilfe äußerst dankbar!

Gruß NeuNeu
Mitglied: bastla
27.02.2013, aktualisiert um 15:35 Uhr
Hallo NeuNeu!

Was willst Du denn genau erreichen? Grundsätzlich ist Dein Stichwort "delayedExpansion" - daher entweder ein Unterprogramm verwenden oder die "verzögerte Variablenerweiterung" aktivieren ...

Variante 1 sähe etwa so aus:
01.
@echo off & setlocal 
02.
set "Pfad=D:\Dein Pfad" 
03.
 
04.
for /f "delims=" %%i in ('dir /b') do call :ProcessFile "%%i" 
05.
goto :eof 
06.
 
07.
:ProcessFile 
08.
echo %1 
09.
 
10.
for /f "delims=" %%j in ('findstr /n /v "akjgriarg" "%Pfad%\%~1"^|findstr "^38:"') do Set "ln=%%j" 
11.
set ln 
12.
echo %ln:~42,10% 
13.
 
14.
echo bla 
15.
echo %1 
16.
echo ln=%ln% 
17.
REM set ln= 
18.
 
19.
echo %ln:~42,10% 
20.
echo start 
21.
echo Die Variable ln enthält "%ln%" 
22.
 
23.
echo hier 
24.
goto :eof
Grüße
bastla

P.S.: Findest Du nicht auch passend formatierten Code viel besser lesbar?
Bitte warten ..
Mitglied: NeuNeu
27.02.2013 um 13:16 Uhr
Hallo bastla,

ich möchte für jede Textdatei mein Datum (in Zeile 38, Position 42) ausgelesen haben um dieses
dann in eine Datei zu schreiben.
Aber mein echo %ln:~42,10% zeigt mir schon, dass da nicht das Datum der aktuellen Datei drin ist -
stattdessen das Datum der letzten Datei. Wenn man meinen code als .bat abspeichert und aufruft,
bekomme ich für echo %ln:~42,10% immer nur 17.07.2011 und das ist das Datum der letzten Datei in
meinem Verzeichnis.

Was soll diese "verzögerte Variablenerweiterung" bewirken?
Wenn ich Deine Variante einbaue kommt als Meldung:
"Das Sprungziel - ProcessFile wurde nicht gefunden."

Gruß NeuNeu
Bitte warten ..
Mitglied: andimue
27.02.2013 um 15:25 Uhr
Hallo NeuNeu,

was meinst du mit

Zitat von NeuNeu:
Wenn ich Deine Variante einbaue ...

Hast du gesamten Code von bastla 1:1 verwendet oder möglicherweise nur sein
01.
for /f "delims=" %%i in ('dir /b') do call :ProcessFile "%%i" 
in deinen Code integriert ohne die Subroutine :ProcessFile mit zu übernehmen ?

Also bei mir läuft bastla's Code (natürlich)

Andi
Bitte warten ..
Mitglied: NeuNeu
27.02.2013 um 17:23 Uhr
Okay, ich hatte eine Zeile vergessen...
Nun geht es in der Tat, aber ich verstehe nicht, warum ich das jetzt mit dieser
"verzögerten Erweiterung" machen muss,bzw. was diese bewirkt.
Kann nicht verstehen, was an meinem code falsch ist.

Ich würde verstehen wenn Ihr keine Lust habt, mir das lang und breit zu erklären,
aber so ein kleiner Hinweis, warum es mit meinem code nicht klappt, wäre super!
Schliesslich will ich ja in der Zukunft alles besser machen.....

Jedenfalls besten Dank soweit!

Gruß NeuNeu
Bitte warten ..
Mitglied: bastla
27.02.2013, aktualisiert um 19:54 Uhr
Hallo NeuNeu!
ich verstehe nicht, warum ich das jetzt mit dieser "verzögerten Erweiterung" machen muss
Hast Du denn bei Deiner Suche nach "delayedExpansion" noch nicht mal diesen Beitrag gefunden?

BTW: Mein Vorschlag verwendet die "verzögerte Erweiterung" nicht (was eigentlich aus meinem Kommentar oben aufgrund von
entweder ein Unterprogramm verwenden oder die "verzögerte Variablenerweiterung" aktivieren

Variante 1
hätte hervorgehen sollen) ...

Grüße
bastla
Bitte warten ..
Mitglied: andimue
28.02.2013 um 07:50 Uhr
Hallo NeuNeu,

sehr hilf- und lehrreich ist auch dieser Artikel über das for-Kommando:
http://www.administrator.de/wissen/tutorial-zur-for-schleife-155681.htm ...
Darin wird das Prinzip der "delayedExpansion" sehr gut beschrieben.

Gruß
Andi
Bitte warten ..
Mitglied: bastla
28.02.2013 um 10:20 Uhr
@ andimue
Sehe ich genauso und habe ich nur darum nicht hier angeführt, weil dieses Tutorial ohnehin im oben erwähnten Beitrag (allerdings erst ganz am Ende) verlinkt ist ...

Grüße
bastla
Bitte warten ..
Neuester Wissensbeitrag
DSL, VDSL

Telekom blockiert immer noch den Port 7547 in ihrem Netz

(3)

Erfahrungsbericht von joachim57 zum Thema DSL, VDSL ...

Ähnliche Inhalte
Batch & Shell
Per Batch Textdatei Spaltenweise auslesen nochmal weil ich dumm bin (9)

Frage von PinkFLuffyUnicorn zum Thema Batch & Shell ...

Batch & Shell
Batch Textdatei Spaltenweise auslesen (7)

Frage von PinkFLuffyUnicorn zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (34)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

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

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...