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

Variablen aus ini file in batch einlesen

Frage Entwicklung Batch & Shell

Mitglied: Mit.ohne.Ahnung

Mit.ohne.Ahnung (Level 1) - Jetzt verbinden

06.09.2013, aktualisiert 11:04 Uhr, 2204 Aufrufe, 17 Kommentare

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
01.
@echo off 
02.
 
03.
set "inifile=config.ini 
04.
 
05.
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 
06.
for /f "tokens=2 delims==" %%i in ('findstr "/c:PGHOST=" \\%NOTFALL_PGHOST%\charly$\TEST_mit_INI\config.ini') do set PGHOST=%%i 
07.
for /f "tokens=2 delims==" %%i in ('findstr "/c:DIR_CMD=" \\%NOTFALL_PGHOST%\charly$\TEST_mit_INI\config.ini') do set DIR_CMD=%%i 
08.
for /f "tokens=2 delims==" %%i in ('findstr "/c:PGDATABASE=" \\%NOTFALL_PGHOST%\charly$\TEST_mit_INI\config.ini') do set PGDATABASE=%%i 
09.
for /f "tokens=2 delims==" %%i in ('findstr "/c:PGUSER=" \\%NOTFALL_PGHOST%\charly$\TEST_mit_INI\config.ini') do set PGUSER=%%i 
10.
for /f "tokens=2 delims==" %%i in ('findstr "/c:PGPASSWORD=" \\%NOTFALL_PGHOST%\charly$\TEST_mit_INI\config.ini') do set PGPASSWORD=%%i 
11.
for /f "tokens=2 delims==" %%i in ('findstr "/c:PGPORT=" \\%NOTFALL_PGHOST%\charly$\TEST_mit_INI\config.ini') do set PGPORT=%%i 
12.
for /f "tokens=2 delims==" %%i in ('findstr "/c:DST_PATH=" \\%NOTFALL_PGHOST%\charly$\TEST_mit_INI\config.ini') do set DST_PATH=%%i 
13.
for /f "tokens=2 delims==" %%i in ('findstr "/c:DST_FILE=" \\%NOTFALL_PGHOST%\charly$\TEST_mit_INI\config.ini') do set DST_FILE=%%i 
14.
for /f "tokens=2 delims==" %%i in ('findstr "/c:CMD_DUMP=" \\%NOTFALL_PGHOST%\charly$\TEST_mit_INI\config.ini') do set CMD_DUMP=%%i 
15.
for /f "tokens=2 delims==" %%i in ('findstr "/c:CMD_REST=" \\%NOTFALL_PGHOST%\charly$\TEST_mit_INI\config.ini') do set CMD_REST=%%i 
16.
for /f "tokens=2 delims==" %%i in ('findstr "/c:CMD_SQL=" \\%NOTFALL_PGHOST%\charly$\TEST_mit_INI\config.ini') do set CMD_SQL=%%i 
17.
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 
18.
for /f "tokens=2 delims==" %%i in ('findstr "/c:NET_USE_?=" \\%NOTFALL_PGHOST%\charly$\TEST_mit_INI\config.ini') do set NET_USE_?=%%i 
19.
 
20.
wait 1 
21.
 
22.
rem **Laufwerk zum Produktivserver verbinden** 
23.
 
24.
IF not exist %NET_USE_?%: net use %NET_USE_?%: \\%PGHOST%\Charly$ 
25.
 
26.
rem ** Charly auf dem ProduktionsServer beenden** 
27.
 
28.
\\%PGHOST%\c$\windows\system32\taskkill /S %PGHOST% /f /IM solutio.exe /T >nul 
29.
 
30.
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
Mitglied: Snowman25
06.09.2013 um 11:26 Uhr
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
Bitte warten ..
Mitglied: Mit.ohne.Ahnung
06.09.2013 um 11:33 Uhr
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. ... nein, der Snowman25 ...

Gruß Frank
Bitte warten ..
Mitglied: Snowman25
06.09.2013 um 11:49 Uhr
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.
Bitte warten ..
Mitglied: Biber
06.09.2013, aktualisiert um 11:54 Uhr
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.

01.
C:\Users\Biber>echo set Notfall_PGHOST=%DIR_CMD%\psql.exe| findstr /c:PGHOST 
02.
set Notfall_PGHOST=%DIR_CMD%\psql.exe 
Ändere die Vaiable "PGHOST" auf "Normal_PGHOST" und suche nach diesem Namen.

Grüße
Biber
Bitte warten ..
Mitglied: facebraker
06.09.2013 um 11:55 Uhr
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
Bitte warten ..
Mitglied: Mit.ohne.Ahnung
06.09.2013 um 12:00 Uhr
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
Bitte warten ..
Mitglied: Mit.ohne.Ahnung
06.09.2013 um 12:02 Uhr
Hallo Snowman,

aber prinzipiell könnte das schon funktionieren ?

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

Gruß Frank
Bitte warten ..
Mitglied: Mit.ohne.Ahnung
06.09.2013 um 12:05 Uhr
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

Gruß Frank
Bitte warten ..
Mitglied: Endoro
06.09.2013, aktualisiert um 12:15 Uhr
Hi,
statt dieser ganzen findstr Operationen geht es einfach so:
01.
@echo off &SETLOCAL 
02.
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.
Bitte warten ..
Mitglied: facebraker
06.09.2013 um 12:16 Uhr
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
Bitte warten ..
Mitglied: Mit.ohne.Ahnung
06.09.2013 um 12:19 Uhr
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

Wünsche schönes WE

Frank
Bitte warten ..
Mitglied: Biber
06.09.2013, aktualisiert um 12:20 Uhr
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.
01.
C:\Users\Biber>echo set Notfall_PGHOST=%DIR_CMD%\psql.exe| findstr /c:"set PGHOST=" 
02.
-- 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
Bitte warten ..
Mitglied: Endoro
06.09.2013 um 12:33 Uhr
Hallo @Biber,
Regex geht auch
01.
findstr /r "\<PGHOST\>"
lg.
Bitte warten ..
Mitglied: Mit.ohne.Ahnung
06.09.2013 um 13:03 Uhr
Hallo Biber,

sorry für das "e" habe mich von deinem Bild verwirren lassen

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

Gruß Frank
Bitte warten ..
Mitglied: Mit.ohne.Ahnung
06.09.2013 um 13:04 Uhr
Hallo Endoro,

regex bedeutet ? macht was ?

Gruß Frank
Bitte warten ..
Mitglied: Endoro
06.09.2013 um 13:12 Uhr
Hi,
Regex
lg.
Bitte warten ..
Mitglied: Mit.ohne.Ahnung
06.09.2013 um 13:44 Uhr
Hallo Alex,

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

Gruß Frank
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst Variablen Zusammenbauen 2.0 ( Batch ) (6)

Frage von clragon zum Thema Batch & Shell ...

Batch & Shell
gelöst FOR Loop Variablen ( Batch ) (2)

Frage von clragon zum Thema Batch & Shell ...

Batch & Shell
gelöst Kl. Frage: Log-File schreiben per Batch (3)

Frage von Yauhun zum Thema Batch & Shell ...

Batch & Shell
gelöst Grosses Variablen Problem ( Batch) (30)

Frage von clragon zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Festplatten, SSD, Raid
M.2 SSD wird nicht erkannt (14)

Frage von uridium69 zum Thema Festplatten, SSD, Raid ...