mit.ohne.ahnung
Goto Top

Variablen aus ini file in batch einlesen

Ein freundliches goooood Morning,

hab mal wieder ein Problemchen was ich nicht verstehe.....
ich möchte Variablen aus einer ini einlesen.... aber das script macht was anderes???

Hier vielleicht nur mal das Beispiel mit mit "net use"

meine config.ini:
set DIR_CMD=C:\solutio\Server\PostgreSQL\bin
set PGHOST=Schulungsserver
set Notfall_PGHOST=NotServer
set PGDATABASE=solutiodb
set PGUSER=postgres
set PGPASSWORD=12345
set PGPORT=5432
set DST_PATH=\\%NOTFALL_PGHOST%\Charly$
set DST_FILE=ProduktivServer.backup
set CMD_DUMP=%DIR_CMD%\pg_dump.exe
set CMD_REST=%DIR_CMD%\pg_restore.exe
set CMD_SQL=%DIR_CMD%\psql.exe
set CMD_DUMP_ALL=%DIR_CMD%\pg_dumpall.exe
set NET_USE_?=z

hier einen Auszug von meinem mein
@echo off

set "inifile=config.ini  

for /f "tokens=2 delims==" %%i in ('findstr "/c:Notfall_PGHOST=" \\127.0.0.1\charly$\Charly\TEST_mit_INI\config.ini') do set NOTFALL_PGHOST=%%i  
for /f "tokens=2 delims==" %%i in ('findstr "/c:PGHOST=" \\%NOTFALL_PGHOST%\charly$\TEST_mit_INI\config.ini') do set PGHOST=%%i  
for /f "tokens=2 delims==" %%i in ('findstr "/c:DIR_CMD=" \\%NOTFALL_PGHOST%\charly$\TEST_mit_INI\config.ini') do set DIR_CMD=%%i  
for /f "tokens=2 delims==" %%i in ('findstr "/c:PGDATABASE=" \\%NOTFALL_PGHOST%\charly$\TEST_mit_INI\config.ini') do set PGDATABASE=%%i  
for /f "tokens=2 delims==" %%i in ('findstr "/c:PGUSER=" \\%NOTFALL_PGHOST%\charly$\TEST_mit_INI\config.ini') do set PGUSER=%%i  
for /f "tokens=2 delims==" %%i in ('findstr "/c:PGPASSWORD=" \\%NOTFALL_PGHOST%\charly$\TEST_mit_INI\config.ini') do set PGPASSWORD=%%i  
for /f "tokens=2 delims==" %%i in ('findstr "/c:PGPORT=" \\%NOTFALL_PGHOST%\charly$\TEST_mit_INI\config.ini') do set PGPORT=%%i  
for /f "tokens=2 delims==" %%i in ('findstr "/c:DST_PATH=" \\%NOTFALL_PGHOST%\charly$\TEST_mit_INI\config.ini') do set DST_PATH=%%i  
for /f "tokens=2 delims==" %%i in ('findstr "/c:DST_FILE=" \\%NOTFALL_PGHOST%\charly$\TEST_mit_INI\config.ini') do set DST_FILE=%%i  
for /f "tokens=2 delims==" %%i in ('findstr "/c:CMD_DUMP=" \\%NOTFALL_PGHOST%\charly$\TEST_mit_INI\config.ini') do set CMD_DUMP=%%i  
for /f "tokens=2 delims==" %%i in ('findstr "/c:CMD_REST=" \\%NOTFALL_PGHOST%\charly$\TEST_mit_INI\config.ini') do set CMD_REST=%%i  
for /f "tokens=2 delims==" %%i in ('findstr "/c:CMD_SQL=" \\%NOTFALL_PGHOST%\charly$\TEST_mit_INI\config.ini') do set CMD_SQL=%%i  
for /f "tokens=2 delims==" %%i in ('findstr "/c:CMD_DUMP_ALL" \\%NOTFALL_PGHOST%\charly$\TEST_mit_INI\config.ini') do set CMD_DUMP_ALL=%%i  
for /f "tokens=2 delims==" %%i in ('findstr "/c:NET_USE_?=" \\%NOTFALL_PGHOST%\charly$\TEST_mit_INI\config.ini') do set NET_USE_?=%%i  

wait 1

rem **Laufwerk zum Produktivserver verbinden**

IF not exist %NET_USE_?%: net use %NET_USE_?%: \\%PGHOST%\Charly$

rem ** Charly auf dem ProduktionsServer beenden**

\\%PGHOST%\c$\windows\system32\taskkill /S %PGHOST% /f /IM solutio.exe /T >nul

Pause

Das Problem ist das er mir das Laufwerk zwar verbindet (z), aber lokal z: auf Notserver und nicht Schulungsserver ??
genauso beendet er den Prozess lokal und nicht auf dem Remotesystem??

Wo ist da mein Denkfehler ?

Grüße Frank

Content-Key: 216294

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

Printed on: April 19, 2024 at 22:04 o'clock

Member: Snowman25
Snowman25 Sep 06, 2013 at 09:26:28 (UTC)
Goto Top
Hallo @Mit.ohne.Ahnung,

Das sieht nach unnötig viel Code aus. Was möchtest du damit eigentlich erreichen?
Wenn du die "config.ini" (welche kein gültiges INI-File ist. Da gibt es ein bestimmtest Format) zu einer Batch machst und aus einem Skript callst, dann hast du alle Variablen gesetzt.

Gruß,
@Snowman25
Member: Mit.ohne.Ahnung
Mit.ohne.Ahnung Sep 06, 2013 at 09:33:09 (UTC)
Goto Top
Hallo Snowman25,

über deine angesprochene Lösung habe ich auch schon Nachgedacht....

Was ich gerne machen würde ist die bat zu einer exe kompilieren und über eine gui die config.ini schreiben.

so zumindest ist meine Zielsetzung.... ob das Machbar ist oder nicht.... sagt mir hoffentlich gleich das Licht. face-smile ... nein, der Snowman25 ...

Gruß Frank
Member: Snowman25
Snowman25 Sep 06, 2013 at 09:49:07 (UTC)
Goto Top
bat2exe: Vergiss es.
Hatten wir hier schon viele Male besprochen. Sollte nicht gemacht werden.
So ein bat2exe-Teil macht eh nur 'nen Wrapper drum und kopiert die .bat in ein TEMP-Verzeichnis während der Ausführung.
Member: Biber
Biber Sep 06, 2013 updated at 09:54:06 (UTC)
Goto Top
Moin Mit.ohne.Ahnung,

unabhängig von snowmans Hinweisen, dass dieses Konzept noch ein wenig verfeinert werden sollte - es scheitert im jetzigen Szenario an den falschen Rückgaben von FINDSTR.

Bei der Suche nach "PGHOST" wird auch "Notfall_PGHOST" zurückgegeben.

C:\Users\Biber>echo set Notfall_PGHOST=%DIR_CMD%\psql.exe| findstr /c:PGHOST
set Notfall_PGHOST=%DIR_CMD%\psql.exe 

Ändere die Vaiable "PGHOST" auf "Normal_PGHOST" und suche nach diesem Namen.

Grüße
Biber
Member: facebraker
facebraker Sep 06, 2013 at 09:55:27 (UTC)
Goto Top
Hallo Frank,

warum machst du es nicht gleich VB.NET mit dem Visual Studio Express ist das kein Problem, dann hast du ein sauberes Programm?

Ich empfinde es sogar einfach mit Debugger und GUI zu programmieren, da kannst du in Einzelschritten durchgehen und testen.

Gruß Alex
Member: Mit.ohne.Ahnung
Mit.ohne.Ahnung Sep 06, 2013 at 10:00:43 (UTC)
Goto Top
Hallo Bieber,

danke für den Hinweis....

eigentlich dachte ich würde das /c: davor genau das auschließen?

Werde dein Vorschlag aber ausprobieren....

Danke

Gruß Frank
Member: Mit.ohne.Ahnung
Mit.ohne.Ahnung Sep 06, 2013 at 10:02:44 (UTC)
Goto Top
Hallo Snowman,

aber prinzipiell könnte das schon funktionieren ?

Sonst müsste ich ja ganz von Null wieder anfangen..

Gruß Frank
Member: Mit.ohne.Ahnung
Mit.ohne.Ahnung Sep 06, 2013 at 10:05:34 (UTC)
Goto Top
Hallo Alex,

davon habe ich noch weniger Ahnung als von dem was ich jetzt mache....... versuche mich gerade in die Materie einzuarbeiten.

Hast du mir ein paar Tipps für gute Lektüre für Anfänger zum einsteigen??

Mit diesem script versuche ich gerade meinen Arbeitgeber davon zu überzeugen das eine gute VB Schulung für mich und die Firma das richtige ist face-wink

Gruß Frank
Member: Endoro
Endoro Sep 06, 2013 updated at 10:15:52 (UTC)
Goto Top
Hi,
statt dieser ganzen findstr Operationen geht es einfach so:
@echo off &SETLOCAL
FOR /f "tokens=1*" %%a IN (config.ini) DO SET "%%~b"  
und die Variablen sind geladen wenn du schon nicht einfach copy config.ini config.bat&call config.bat machen willst.
lg.
Member: facebraker
facebraker Sep 06, 2013 at 10:16:30 (UTC)
Goto Top
Hallo Frank,

Amazon ist dein Freund

http://www.amazon.de/Einstieg-Visual-Basic-2012-Programmieranf%C3%A4nge ...

Ich habe es Learning by doing , mir selbst beigebracht.

Gruß Alex
Member: Mit.ohne.Ahnung
Mit.ohne.Ahnung Sep 06, 2013 at 10:19:03 (UTC)
Goto Top
Hallo Endoro,

danke für den Tipp...

... werde ich aber erst morgen testen und Rückmeldung geben... werde jetzt erstmal meinen Geburtstag feiern.... meine Freundin steht schon mit dem Wellholz hinter mir weil ich schon wieder arbeite face-smile

Wünsche schönes WE

Frank
Member: Biber
Biber Sep 06, 2013 updated at 10:20:47 (UTC)
Goto Top
Moin Mit.Ohne.Ahnung,

Zitat von @Mit.ohne.Ahnung:
Hallo Bieber,
Bitte ohne "ie".
eigentlich dachte ich würde das /c: davor genau das auschließen?
Warum sollte es? Du sagst doch damit nur, dass nach dem exakten String "PGHOST" gesucht werden soll - und der ist sowohl in "PGHOST" wie in "Notfall_PGHOST" enthalten.
Du kannst nactürlich nach dem String "=PGHOST" suchen - den gibt es nur in einer Zeile.
C:\Users\Biber>echo set Notfall_PGHOST=%DIR_CMD%\psql.exe| findstr /c:"set PGHOST="  
-- gibt nix zurück

Zum Thema "Will nicht wieder ganz von null anfangen"...

Wenn es aber nur bedeutet, 10 Minuten Aufwand zu haben, dann wäre es doch erwägenswert.

Grüße
Biber
Member: Endoro
Endoro Sep 06, 2013 at 10:33:11 (UTC)
Goto Top
Hallo @Biber,
Regex geht auch face-smile
findstr /r "\<PGHOST\>"  
lg.
Member: Mit.ohne.Ahnung
Mit.ohne.Ahnung Sep 06, 2013 at 11:03:45 (UTC)
Goto Top
Hallo Biber,

sorry für das "e" face-smile habe mich von deinem Bild verwirren lassen face-wink

na ja.. 10 min ... das script ist etwas länger... ist nur ein ausschnitt davon .

Gruß Frank
Member: Mit.ohne.Ahnung
Mit.ohne.Ahnung Sep 06, 2013 at 11:04:30 (UTC)
Goto Top
Hallo Endoro,

regex bedeutet ? macht was ?

Gruß Frank
Member: Endoro
Endoro Sep 06, 2013 at 11:12:45 (UTC)
Goto Top
Hi,
Regex
lg.
Member: Mit.ohne.Ahnung
Mit.ohne.Ahnung Sep 06, 2013 at 11:44:40 (UTC)
Goto Top
Hallo Alex,

danke dir... werde ich mir reinziehen...

Gruß Frank