1.5k Aufrufe
Gefragt in Textverarbeitung von little-key Mitglied (333 Punkte)
Hallo,
bitte um Hilfe im Batch.
Im Moment habe ich eine Variable %exportfolder% in einem 2. Batch gesetzt und diesen mit CALL aufgerufen. Dies ist für weitere Zwecke nicht mehr ausreichend und würde gern auf eine INI-Datei umsteigen.
Nun möchte ich gern, dass alle belegten exportfolder* aus der ini in einer Schleife als Variable %exportfolder% im Batch gesetzt und abgearbeitet werden.
Habe keinen blassen Schimmer. Hoffe mich einigermaßen ausgedrückt zu haben.

Hier die INI:

[EXPORT]
exportfolfer1=c:\export1
exportfolfer2=c:\export2
exportfolfer3=c:\export3
exportfolfer4=c:\export3
exportfolfer5=c:\export5
exportfolfer6=
exportfolfer7=
exportfolfer8=

[IMPORT]


und hier Auszug aus dem Batch:

SET SCRIPTFOLDER=C:\BAT
CALL %SCRIPTFOLDER%\X5_CONFIG.BAT
%SCRIPTFOLDER%\FTP_SYNCRO.FTP "%exportfolder%"

2 Antworten

0 Punkte
Beantwortet von
guck dir mal die hilfe zu "for /?" an ( auf der kommandzeile )

damit geht das recht einfach

LG
0 Punkte
Beantwortet von batti-batch Einsteiger_in (81 Punkte)
Hallo little-key,


das Problem ist recht einfach zu lösen.
Hier nochmal Deine ini-Datei:


[EXPORT]
exportfolfer1=c:\export1
exportfolfer2=c:\export2
exportfolfer3=c:\export3
exportfolfer4=c:\export3
exportfolfer5=c:\export5
exportfolfer6=
exportfolfer7=
exportfolfer8=

[IMPORT]


Das folgende kleine Batch-Programm sucht in Deiner ini-Datei nach dem Wert der Variable "suchzeichenfolge".
Wird diese Zeichenfolge gefunden, wird der in der jeweiligen Zeile Deiner ini-Datei enthaltene Pfad angezeigt; an dieser Stelle könnte sich eine weitere Verarbeitung anschließen.

Wie funktioniert das?

FINDSTR /c:"%suchzeichenfolge%" "%ini_datei%"
im Inneren der FOR-Schleife durchsucht die Datei "ini_datei" nach der Zeichenfolge "suchzeichenfolge"; mit der Option "/c:" wird genau nach der Schreibweise gesucht, die in der Zeile
SET "suchzeichenfolge=exportfolfer"
angegeben wurde. Wenn die Groß- /Kleinschreibung ignoriert werden soll, muß die Zeile im Inneren der FOR-Schleife in
FINDSTR /i /c:"%suchzeichenfolge%" "%ini_datei%"
geändert werden.

Mit "delims==" wird das Zeichen "=" als Trennzeichen zwischen beiden Token definiert
"tokens=2" zerlegt Dir die Ausgabe; hier wird nur der zweite Teil der gefundenen Zeile benötigt; mit der Ziffer "2" wird NUR der zweite Token ausgegeben
%%a ist hier der zweite Token, also diejenige Zeichenfolge, die nach dem mit "delims" definierten Trennzeichen steht

Hier das Programm zum Ausprobieren:


@ECHO off
SETLOCAL enabledelayedexpansion


REM https://supportnet.de/t/2387198
REM
REM (c) batti-batch 10/2011
REM
REM getestet unter Windows XP
REM


SET "ini_datei=c:\temp\ini_datei.ini"
SET "suchzeichenfolge=exportfolfer"


FOR /f "tokens=2 delims==" %%a IN ('FINDSTR /c:"%suchzeichenfolge%" "%ini_datei%"') DO (

SET "exportfolder=%%a"

ECHO Die Variable "exportfolder" hat folgenden Wert: !exportfolder!
REM Hier koennte sich dann
REM die weitere Verarbeitung anschliessen

)


Viel Spaß beim Testen.


Herzliche Grüße
batti-batch
...