arvaxtr
Goto Top

Variable in TextDatei auslesen

Hallo Leute,

ich habe eine TextDatei, in der eine Benutzervariable steht:
%MyVar% ist als Benutzervariable in den Umgebungsvariablen definiert.

Inhalt Datei.ini:
%MyVar%


Mit folgendem Befehl lese ich die erste Zeile aus:
for /f "usebackq skip=1 delims=" %%i in ("%CD%\Datei.ini") do (set "vFirstLine=%%i")


Ich rufe eine zweite Batch auf, und übergeben die Variable:
call "vFile.bat" "!vFirstLine!"


Die vFile.bat gibt den Parameter aus:
echo %1

Hier erhalte ich aber den Inhalt der Variable "MyVar"

Was ich aber will ist, dass einfach nur das Wort %MyVar% ausgegeben wird, also als reiner Text, wie er in der Datei.ini steht.

Ich brauche diesen als reinen Text, da dieses "Wort" in eine weitere Datei geschrieben werden soll...

Wie geht das?

Content-Key: 239590

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

Ausgedruckt am: 29.03.2024 um 15:03 Uhr

Mitglied: Xaero1982
Lösung Xaero1982 30.05.2014, aktualisiert am 30.07.2015 um 00:14:51 Uhr
Goto Top
Moin,

so ganz den Sinn dahinter versteh ich nicht, aber machs mal mit:

call "vFile.bat" %%vFirstLine%%  

Gruß
Mitglied: arvaxtr
arvaxtr 30.05.2014 aktualisiert um 20:17:44 Uhr
Goto Top
Hi,
sorry, ich schildere mein Problem noch mal anschaulicher:
Ich will, dass ein Pfad genauso wiedergegeben wird, wie er in der TXT-Datei steht, anstatt dass darin enthaltene Variablen als dessen Werte ausgegeben werden.

desktop.ini
[.ShellClassInfo]
IconResource=%windir%\win.ico

MainBatch.bat
@echo off & setlocal enableDelayedExpansion

::READ
for /f "usebackq skip=1 delims=" %%i in ("%CD%\desktop.ini") do (set "vFirstLine=%%i")  

::Display
echo "!vFirstLine!"  

::Pass Parameter
call "SubBatch.bat" "!vFirstLine!"  


SubBatch.bat
@echo off

echo %1

pause


Die Ausgabe:
"IconResource=%windir%\win.ico"  
"IconResource=C:\Windows\win.ico"  
Drücken Sie eine beliebige Taste . . .

Wie man an der zweiten Zeile sieht, ist der Parameter in der Datei SubBatch.bat umgewandelt worden.
Das möchte ich aber vermeiden, so dass der Parameter wie die erste Zeile ausgegeben wird...

Was ich desweiteren absolut nicht hinbekomme ist, eine Variable in die ZwischenAblage zukopieren

echo %%windir%%|clip
echo ^%windir^%|clip

Klappt alles nicht, ich will nicht den Wert von dieser Variable in die Zwischenablagen haben, sondern genau diesen Text "%windir%"...
Mitglied: Xaero1982
Xaero1982 30.05.2014 um 20:21:01 Uhr
Goto Top
Und ich wiederhole meinen Beitrag gerne noch mal face-smile

Du kannst gerne auch die "" angeben. Spielt aber keine Rolle.

Ich habe gerade exakt die von dir genannten Dateien erstellt mit den identischen Namen und habe in der MainBatch folgendes geändert:

call "SubBatch.bat" "%%vFirstLine%%"  

Ausgabe:

"IconResource=%windir%\win.ico"  
"IconResource=%windir%\win.ico"  
Drücken Sie eine beliebige Taste . . .

Ich würde meinen, dass die Ausgaben identisch sind, oder?

Gruß
Mitglied: arvaxtr
arvaxtr 30.05.2014 aktualisiert um 20:33:20 Uhr
Goto Top
Hi, Xaero1982
ich könnte schwören, das die doppelten Prozentzeichen so ziemlich das Erste war, was ich zuerst ausprobiert hatte, bevor ich mir die Mühe machte, die Frage hier zu posten.
Es klappt jetzt wie mit Zauberkraft, vielen vielen Dank face-smile))

bleibt noch die Frage, wie ich die Variable %windir% in die Zwischen Ablage kopieren kann,

echo %%windir%%|clip
echo ^%windir^%|clip

klappen nicht
Mitglied: Xaero1982
Xaero1982 30.05.2014 um 21:07:28 Uhr
Goto Top
Das klappt auch so nicht wie es aussieht. Denn der Zwischenablage scheint es warum auch immer wurscht zu sein mit den %% Zeichen.

Du musst das daher in meinen Augen (Bastla?? face-smile ) umgehen:

echo %%windir%% >test.log
clip < test.log
del test.log

Gruß