olioink
Goto Top

Batch Parameter auslesen und in bestehnder Datei einfügen (Variable)

Moin Moin,

stehe leider auf dem Schlauch. Möchte aus einer Datei eine Variable auslesen (klappt) und in einer anderen
einfügen (klappt nicht).

Zur Zeit sieht es so aus:

for /f "tokens=2" %%i in ('findstr /i "%computername%" "sn.ini"') do set SRN=%%i

Variable auslesen

Danach soll der Batch die Variable in einem Unterverzeichniss in eine Datei einfügen:

set SRN=<"\test neu\test.txt"> %SRN%

Bekomme das nicht hin...

Für hilfe dankbar..


see you

Content-Key: 205104

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

Printed on: April 25, 2024 at 20:04 o'clock

Member: bastla
bastla Apr 16, 2013 at 21:29:11 (UTC)
Goto Top
Hallo olioink und willkommen im Forum!

Was verstehst Du unter "einfügen"? Falls nur "am Ende hinzufügen" gemeint wäre, einfach
>>"\test neu\test.txt" echo %SRN%
Grüße
bastla
Member: olioink
olioink Apr 17, 2013 at 18:30:08 (UTC)
Goto Top
Moin Moin,

na ja steht in Klammern (Variable), soll als eine Varaiable eingestezt werden. Genauer
geht es um eine Seriennummer die gesetzt wird und vom Setup verwendet werden soll.

Gruß
olioink
Member: bastla
bastla Apr 17, 2013 at 18:53:07 (UTC)
Goto Top
Hallo olioink!

Klarer macht's diese Erklärung auch nicht ...

Magst Du nicht einfach einen Vorher-Nachher-Vergleich der zweiten Datei (als "Code" formatiert posten?

Grüße
bastla
Member: olioink
olioink Apr 17, 2013 at 19:33:13 (UTC)
Goto Top
Moin Moin bastla,

habe also 2 Dateien, in der einen steht der Computername Nummer.

Datei 1 (sn.txt) mit Namen und Nummer
 PC01 xxxx.xxxx.xxx.xxx.

Datei 2 (test.txt) mit der Variablen:
 Serienenummer="%SRN%"    

Die Variable %SRN% soll durch die Nummer ersetzt werden....

Erste Zeile des Batch ist
 for /f "tokens=2" %%i in ('findstr /i "%computername%" "sn.txt"') do set SRN=%%i  
  

Zweite Zeile soll sein
set SRN /P="\test neu\test.txt" %SRN%   

soweit kann ich die Nummer auslesen bekomme sie aber nicht in die zweite Datei.

Gruß
olioink
Member: bastla
bastla Apr 18, 2013 updated at 10:56:23 (UTC)
Goto Top
Hallo olioink!

Und warum schreibst Du die zweite Datei nicht einfach neu, wenn dort ohnehin nur
 Serienenummer="%SRN%"
stehen soll?

Grüße
bastla
Member: olioink
olioink Apr 22, 2013 at 19:18:21 (UTC)
Goto Top
Moin bastla,

selbstverständlich steht nur nicht das in der Datei. Vom Prinzip:

Variable über batch auslesen
Dann die zwischen gespeicherte Variable in eine weitere Datei hinein schreiben.

D.h. die Datei ersetzt den Platzhalter durch den Wert der Variable. (Speichert den Wert in der Datei ab...)

Die Datei wird dann in einem unabhängigen Schritt weiter verwendet. Diese "Ergebinss Datei"
wird umkopiert und mit einer Silent Installation verwendet.

So schwer ist das doch nicht zu verstehen.

Ich denke ehr, das das nicht so ohne weiters geht, im Batch.
Sehr viele Fragen beschäftigen sich damit... ohne ein entsprechends Ergebniss.

Und selbst wenn ich sie neu schreiben muss, soll der ganze andere Inhalt mit eingefügt werden.

Im Prinzip läuft es auf gleiche raus.

Hoffe das jetzt verständlicher wird. Und wenn das nicht geht, welche alternative hat man...?

see you (hear you, read you)
olioink
Member: bastla
bastla Apr 22, 2013 updated at 20:00:54 (UTC)
Goto Top
Hallo olioink!
So schwer ist das doch nicht zu verstehen.
... aber offensichtlich ist es schwer zu erklären face-wink - dass es mehrere Zeilen in der Datei 2 gibt, hast Du jedenfalls noch nicht einmal in Deinem Beispiel oben gezeigt ...

... anyhow: Besser ginge Derartiges zwar per VBS, aber grundsätzlich lässt sich das auch per Batch erledigen - etwa so:
@echo off & setlocal
set "Datei=D:\test.txt"  
set "Platzhalter=SRN"  

set "SRN="  
for /f "tokens=2" %%i in ('findstr /i "%computername%" "sn.ini"') do set "SRN=%%i"  
if not defined SRN echo SRN nicht gefunden! & goto :eof

set "TempDat=%temp%\temp.txt"  
move "%Datei%" "%TempDat%"  
(for /f "tokens=1* delims=:" %%i in ('findstr /n "^" "%TempDat%"') do (  
    set "Zeile=%%j"  
    setlocal enabledelayedexpansion
    if defined Zeile (
        echo !Zeile:%Platzhalter%=%SRN%!
    ) else (
        echo(
    )
    endlocal
))>"%Datei%"  
In der relevanten Zeile der "test.txt" sollte allerdings
Serienenummer="SRN"
(also ohne Prozentzeichen) stehen, wobei "SRN" nur einmal in der gesamten Datei vorkommen darf. Zur Sicherheit kannst Du natürlich "SRN" auch durch zB "_SRN_" ersetzen (natürlich auch in Zeile 3 des Batches).


Um Deine ursprüngliche Idee (also mit "%SRN%") umzusetzen, könntest Du übrigens noch
@echo off & setlocal
set "Datei=D:\test.txt"  
set "Platzhalter=SRN"  

set "SRN="  
for /f "tokens=2" %%i in ('findstr /i "%computername%" "sn.ini"') do set "SRN=%%i"  
if not defined SRN echo SRN nicht gefunden! & goto :eof

set "TempDat=%temp%\temp.txt"  
move "%Datei%" "%TempDat%"  
(for /f "tokens=1* delims=:" %%i in ('findstr /n "^" "%TempDat%"') do (  
    call echo(%%j
))>"%Datei%"  
versuchen.

Grüße
bastla
Member: olioink
olioink May 06, 2013 at 21:46:34 (UTC)
Goto Top
Danke bastla,

hat soweit geklappt..

merci

olioink