25521
Goto Top

Variable aus Datei lesen? Einfacher weg gesucht.

Wie kann ich aus einer Datei eine variable auslesen?

Hallo erst mal,

ich habe eine Datei namens Conf.wcl in der steht 1 oder 2 zeichen. A B ... Y Z AA AB ... AY AZ

Nun müste ich nur den weg wiessen wie ich den oder die Buchstaben aus der Datei auslesen kann und einer Variable in einer Batch zuweisen kann. Hintergund, Abhängieg von dem was in Conf.wcl steht soll entschieden werden ob die Dateine gesichert werden müssen und wenn ja, legen die Buchstaben mit fest wohin.

Content-Key: 49318

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

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

Member: bastla
bastla Jan 20, 2007 at 07:21:07 (UTC)
Goto Top
Hallo Telena!

Versuch
set code=
for /f %%i in (conf.wcl) do if not defined code set code=%%i
Die etwas aufwändigere Schreibweise soll sicher stellen, dass nur die erste (nicht leere) Zeile verwendet wird; danach ist die Variable "code" schon "defined" (vorhanden) und wird nicht mit Einträgen aus etwaigen weiteren (wenn auch unbeabsichtigten) Zeilen in "conf.wcl" überschrieben.

HTH
bastla
Member: Biber
Biber Jan 20, 2007 at 12:48:00 (UTC)
Goto Top
Moin Telena,

ergänzend zu bastla's Lösung noch ein paar Anmerkungen zu Deiner Conf-Datei.
ich habe eine Datei namens Conf.wcl in der steht 1 oder 2 zeichen..
Bin nicht sicher, ob ich das richtig verstehe....
Wenn wirklich die ganze conf.wcl nur aus dieser einen Zeile besteht, dann geht es am einfachsten mit
set /p neueVariable=<Conf.wcl

Wenn die Conf.wcl halbwegs pflegbar/lesbar konzipiert ist und sinngemäß wie eine *.ini-Datei aussieht
....
; das ist eine conf.wcl-Datei
; Da können Kommentarzeilen drin stehen, damit ein Leser weiß, was er ändern kann oder nicht ändern darf
;  da können [Sections] enthalten sein, um eine Eindeutigkeit von Einträgen sicherzustellen etc.
;Beispiel:
[Sicherung]
; So könnte 1 bedeuten "Ja" und 0/kein Eintrag "nicht sichern"  
Sichern=1
BackupPfad=X:\Archiv

Wenn es als so in der Art aussehen würde, dann kannst du einzelne Zeilen-Einträge gezielt mit SET [ohne /P ] in geleichnamige Variablen setzen, wenn Du die relevante Zeile mit FindStr.exe ermittelst:
:: --ermitteln und Setzen mit einer FOR /F-Anweisung-
FOR /F %%i in ('findstr  /i "BackupPfad" conf.wcl')  do Set %%i  
:: dann steht der Wert in einer Variablen %BackupPfad%

Gruß
Biber
Mitglied: 25521
25521 Jan 20, 2007 at 13:45:37 (UTC)
Goto Top
Danke erst mal euch 2,

Ja die Conf.wcl ist selbst erdacht und es stehen nur die Bustaben drin in Zeile 1. Sinn, wenn dort stände T und der Benutzer möchte aber mit Konfiguration B starten. Dann wird erst die Conf.wcl geladen. Der Inhalt mit der Auswahl des Benutzers verglichen. So da B und T unterschiedlich sind wird einfach die aktuelle Config nach Bachup\WTF_“Inhalt aus Conf.wcl“ gesichert und danach weil ja der Benutzer auf Config B starten will, Der Inhalt von Backup/WTF_B nach rauskopiert und die alte Config ersäst.

Ich habe zwar schon ein Skript das dieses machen kann, nur leider ist es nur in der Lage 2 Konfigurationen zu unterstützen.

@Echo off
Rem *** Start vorbereitungen ***
Rem ****************************
IF exist Backup\Loader.log Goto Start_0
Echo Log erstellt am %date% um %time% > Backup\Loader.log

:Start_0
Echo ' >> Backup\Loader.log  
Echo Start am %date% um %time% >> Backup\Loader.log
tasklist | find "WoW.exe" >nul  
IF %errorlevel% EQU 0 Goto Fehler_3

IF exist WTF\Conf.A Goto Start_1
IF exist WTF\Conf.B Goto Start_1
Goto Fehler_1

:Start_1
IF /I (%1) EQU (/A) Goto Spiel_A
IF /I (%1) EQU (/B) Goto Spiel_B

If /I (%1) EQU (/Hilfe) Goto Help_1
If /I (%1) EQU (/Help) Goto Help_1
If /I (%1) EQU (/?) Goto Help_1
Goto Fehler_2

Rem ----------------------------------------------------------------------


Rem *** Mit Config A Spielen ***
Rem ****************************
:Spiel_A
Echo Bereite das Starten von World of Warcraft mit Config A vor.
Echo %time% Bereite das Starten von World of Warcraft mit Config A vor. >> Backup\Loader.log
IF exist WTF\Conf.A Goto Ende

Rem *** Sichern von Config B ***
Echo Sichere die Configuration.
Echo %time% Sichere Configuration B Nach Backup\ >> Backup\Loader.log
CD Backup
rmdir Interface_B /S /Q
mkdir Interface_B
CD..
XCOPY Interface /E /K /R Backup\Interface_B /Q

CD Backup
rmdir WTF_B /S /Q
mkdir WTF_B
CD..
XCOPY WTF /E /K /R Backup\WTF_B /Q
Echo %time% Sichere OK >> Backup\Loader.log

Rem *** Alte Configuration Löschen ***
Echo Loesche INTERFACE und WTF...
Echo %time% Löschen der alten Configuration und laden von Configuration A >> Backup\Loader.log
rmdir Interface /S /Q
rmdir WTF /S /Q

Echo Erstelle Vezeichnisse.
mkdir Interface
mkdir WTF

Echo Copiere Interface und einstellungen...
XCOPY Backup\Interface_A /E /K /R Interface /Q
XCOPY Backup\WTF_A /E /K /R WTF /Q
Echo %time% Laden OK >> Backup\Loader.log
Goto Ende


Rem *** Mit Config B Spielen ***
Rem ****************************
:Spiel_B
Echo Bereite das Starten von World of Warcraft mit Config B vor.
Echo %time% Bereite das Starten von World of Warcraft mit Config B vor. >> Backup\Loader.log
IF exist WTF\Conf.B Goto Ende

Rem *** Sichern von Config A ***
Echo Sichere die Configuration.
Echo %time% Sichere Configuration A Nach Backup\ >> Backup\Loader.log
CD Backup
rmdir Interface_A /S /Q
mkdir Interface_A
CD..
XCOPY Interface /E /K /R Backup\Interface_A /Q

CD Backup
rmdir WTF_A /S /Q
mkdir WTF_A
CD..
XCOPY WTF /E /K /R Backup\WTF_A /Q
Echo %time% Sichere OK >> Backup\Loader.log

Rem *** Alte Configuration Löschen ***
Echo Loesche INTERFACE und WTF...
Echo %time% Löschen der alten Configuration und laden von Configuration B >> Backup\Loader.log
rmdir Interface /S /Q
rmdir WTF /S /Q

Echo Erstelle Vezeichnisse.
mkdir Interface
mkdir WTF

Echo Copiere Interface und einstellungen...
XCOPY Backup\Interface_B /E /K /R Interface /Q
XCOPY Backup\WTF_B /E /K /R WTF /Q
Echo %time% Laden OK >> Backup\Loader.log
Goto Ende

Rem *** Fehler Meldungen ***
:Fehler_1
Echo %time% Fehler code 1 >> Backup\Loader.log
Echo Keine Configuration zum sichern gefunden.
Echo Um die Configuratin zu erkennen muss im WTF Ordner eine Datei Conf.A oder Conf.B existieren.
Goto F_Ende

:Fehler_2
Echo %time% Fehler code 2 >> Backup\Loader.log
Echo Fehler!
Echo Keine Configuration zum starten angegeben.
Echo Gültiege eingaben sind /A /B /Hilfe /Help /?
Goto F_Ende

:Fehler_3
Echo %time% Fehler code 3 >> Backup\Loader.log
Echo Fehler!
Echo World of Warcraft wird bereits ausgeführt.
Echo Um über den Loader zu starten darf World of Warcraft nicht ausgeführt werden.
Echo Bitte beenden sie World of Warcraft und starten dan über den Loader neu.
Goto F_Ende

Rem *************************

:Help_1
Echo Die Hilfe ist noch nicht verfügbar.

:F_Ende
Echo Programm Ende.
Pause
exit /B

:Ende
Echo Starte World of Warcraft - Viel spass beim spielen!
Echo %time% Configuration OK Starte World of Warcraft. >> Backup\Loader.log
Start Launcher.exe

Da hatte ich die Idee, wenn ich den Buchstaben der Config in eine feste datei rein schreibe, eben Conf.wcl. Dann bin ich in der Lage fast unendlich viele Konfigurationen zu benutzen.
Mitglied: 25521
25521 Jan 20, 2007 at 16:51:43 (UTC)
Goto Top
Nur zur Vervollständigung.

Habe jetzt diesen teil geschaffen.

Rem *** Alte Interface Sichern ****
:AIS ;;<--- Rein
IF EXIST WTF\Conf.wcl Goto SRDY
Set LAST_F=Keine Conf.wcl gefunden
Goto :eof
:SRDY
FOR /F %%i in ('findstr /i "Sichern" WTF\Conf.wcl') do Set %%i  
IF exist Backup\WTF_%Sichern% Call :DWTFS
IF exist Backup\Interface_%Sichern% Call :DINTERS
XCOPY WTF /E /K /R Backup\WTF_%Sichern% /I /Q
XCOPY Interface /E /K /R Backup\Interface_%Sichern% /I /Q
Set LAST_F=OK
Goto :eof ;;---> Raus
:DWTFS
CD Backup
RMDIR WTF_%Sichern% /S /Q
MKDIR WTF_%Sichern%
CD..
Goto :eof
:DINTERS
CD Backup
RMDIR Interface_%Sichern% /S /Q
MKDIR Interface_%Sichern%
CD..
Goto :eof
Rem *******************************


Danke noch mal an Biber.