husana
Goto Top

Bat-Datei erstellen um damit zahlen aus datein zu kopieren und in eine .txt schreiben

Hallo. Ich bin neu hier und kenn mich noch nicht so mit bat-programierung aus. Hoffe das mit hier jemand helfen kann?

Hier meine Frage:
Habe den Ordner "Beispiel". In diesem sind mehrere Unterordner mit Namen AA, AB, AC, AD, AE usw.
In jedem dieser Unterordner ist eine Datei "test.ini" drin. Innerhalb dieser "test.ini" steht in der 10.Zeile "Terminal = 10" (Jeder Unterordner (AA, AB usw.) hat dort eine andere Nr.)

Möchte nun eine Bat-Datei erstellen, die nur diese Nr. ausliest und in ein Textdokument einfügt.

Diese sollte dann so aussehen:

AA - 10
AB - 15
AC - 18
usw.

Danke
husana

Content-Key: 150602

Url: https://administrator.de/contentid/150602

Printed on: April 26, 2024 at 14:04 o'clock

Member: bastla
bastla Sep 08, 2010 at 12:55:37 (UTC)
Goto Top
Hallo husana und willkommen im Forum!

Soferne die Zeile 10 die einzige Zeile ist, die mit "Terminal = " beginnt, könnte das (ungetestet) so gehen:
@echo off & setlocal
set "Ordner=D:\Beispiel"  
set "Liste=D:\Textdokument.txt"  

del "%Liste%" 2>nul  
for /d %%i in ("%Ordner%\*.*") do if exist "%%i\test.ini" for /f "tokens=3" %%a in ('findstr /b /c:"Terminal = " "%%i\test.ini"') do >>"%Liste%" echo %%~nxi - %%a  
Mit dem ersten "for" werden alle Unterordner (die dann als %%i zur Verfügung stehen) abgegrast, und das zweite "for" zerlegt die gefundene Zeile anhand des Standardtrennzeichens "Leerzeichen" und liefert den 3. Bestandteil ("token") als %%a ...

Infos zu den Befehlen erhältst Du mit "Befehl /?", zB
findstr /?
[Edit] Mit %%~nxi sichergestellt, dass nur der Ordnername in die Liste geschrieben wird. [/Edit]

Grüße
bastla
Mitglied: 77559
77559 Sep 08, 2010 at 20:04:57 (UTC)
Goto Top
Hallo Bastla,

findstr kann doch auch rekuriv suchen, wäre dies nicht einfacher:
@echo off & setlocal
set "Ordner=D:\Beispiel"  
set "Liste=D:\Test\Textdokument.txt"  
Pushd %Ordner%
del "%Liste%" 2>nul  
for /F "tokens=1-4 delims=\:=" %%A in ( 'findstr /S /B /C:"Terminal = " test.ini ' ) Do >>"%Liste%" Echo.%%A -%%D  
PopD

Gruß
LotPings
Member: bastla
bastla Sep 08, 2010 at 20:18:46 (UTC)
Goto Top
Hallo LotPings!

Wenn es keine weiteren Unterordner mit möglichen Fundstellen gibt, sicher der bessere Ansatz face-smile ...

Grüße
bastla
Member: husana
husana Sep 09, 2010 at 08:16:40 (UTC)
Goto Top
Guten Morgen

Habe es heute morgen endlich geschafft, nach dem ich gestern verzweifelt aufgegeben habe!!!

Vielen Dank an meine Helfer ;)

Hier mein fertige Batch:

@echo off & setlocal
set "Ordner=D:\Beispiel"
set "Liste=D:\Test\Textdokument.txt"
pushd %Ordner%
del "%Liste%" 2>nul
for /d %%i in ("%Ordner%\*.*") do if exist "%%i\test.ini" for /f "tokens=3" %%a in ( 'findstr /b /c:"Terminal = " "%%i\test.ini"' ) do >>"%Liste%" echo %%~nxi - %%a
popd

Gruß
husana