arthurnyarthur
Goto Top

Wie kann man mehere Werte aus einer Textdatei in verschiedene Variablen speichern?

Bitte um hilfreiche Tipps oder Lösungen.

Hallo an alle Batch-Experten face-smile,

ich habe ein kleines Problem.
Ich habe eine Batchdatei geschrieben, welche die Serial Number von Zertifikaten ausliest und in einer datei abspeichert. Das zum Verständnis:

CODE:

@echo off
SETLOCAL

@set LOG=%COMPUTERNAME%.log

rem @certutil -store -user | findstr /i /C:"Serial Number:" >>%LOG%
FOR /F "tokens=3,*" %%i in ('certutil -store -user^|find "Serial Number:"') DO echo %%i >>%LOG%

@echo. >>%LOG%

ENDLOCAL

AUSGABE in Computername.log:

15489987aa
dfg899er7t895ew64twet4
8789rtzz8w8741wrt44t5eff7f
So, jetzt möchte ich, dass diese Werte unter Verschiedenen Variablen gespeichert werden und nicht nur unter %%i oder so. Am besten wäre, wenn diese gefundenen werte gleich unter verschieden Variablen gespeichtert werden und ich Sie dann einzeln aufrufen kann bzw. weiterverarbeiten kann.
Ein weiteres Problem ist, dass dies so allgemein wie möglich sein soll, da diese Werte varrieren.

Das bekomme ich leider nicht so ganz hin. Habt Ihr da eine Lösung?

Danke schon mal für eute Kommentare!

Content-Key: 136822

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

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

Member: H41mSh1C0R
H41mSh1C0R Feb 25, 2010 at 09:35:42 (UTC)
Goto Top
Wenn in einer Zeile immer nur eine Serial drinnen steht, schreibe doch beim erstellen der Datei vor der Serial einen selbst definierten TAG wie z.B. Serial1=.

Beim Auslesen nimmst du den TAG gleich als Name(ohne das "=" das ist der Delimiter) und schreibst die Serial dahinein.

Grüße
Member: ArthurNYArthur
ArthurNYArthur Feb 25, 2010 at 10:00:50 (UTC)
Goto Top
Hallo H41mSh1C0R,

ich bin eig. ein Batch-Anfänger und deshalb wäre es hilfreich, wenn du es etwas deutlicher beschreiben würdest.
Also um meine Situation noch zu verdeutlichen:
der befehl certutil -store -user erzeugt diese date bzw. den Text:
402.203.0: 0x80070057 (WIN32: 87): ..CertCli Version
Certificate 0 ================
Serial Number: DREeret34356
Issuer: O=ACNLB, C=SI
Subject: CN=XXXXXXXXXXXXXXXXXXXXXXXXX
Non-root Certificate
Cert Hash(sha1): cXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
No key provider information
Encryption test passed

Certificate 1 ================
Serial Number: sdgtzu559e9r7uz
Issuer: OU=VeriSign Trust Network, OU=(c) 1998 VeriSign, Inc. - For authorized use only, OU=Class 3 Public Primary Certification Authority - G2, O=VeriSign, Inc., C=US
Subject: CN=Vxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
O=VeriSign, Inc., C=US
Non-root Certificate
Cert Hash(sha1): xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
No key provider information
No stored keyset property
CertUtil: -store command completed successfully.

___________________________________________________________________________

So jetzt leses ich diese Serial Number raus und speichere den Code hinter Serial Number:!
da es aber mehere Zetifikate sein können soll er jeden "Code" unter einer anderen Variable speichern, doch das bekomme ich nicht ganz hin.
Habe es zwar hinbekommen, dass er nur diese Nummern unter einer datei abspeichert, aber es soll hat diese Werte unter verschiesdenen Variablen speichern.

Sorry, wenn ich mich unverständlich ausdrüche, bin aber unter Zeitdruck face-smile
Mitglied: 60730
60730 Feb 25, 2010 at 10:11:27 (UTC)
Goto Top
Moin,

Sorry, wenn ich mich unverständlich ausdrüche, bin aber unter Zeitdruck face-smile

davon wirds aber auch nicht besser und die Lösung kommt auch nicht schneller, wenn man dauernd nachfragen muß...

Ganz abgesehen davon, dass - wenn mehrere Zertifikate vorhanden sind und man nur die Seriennummer ausliest - für was soll das ganze denn sein? Klar mal ist Zertifikat 1 das und Zertifikat 3 jenes, was aber, wenn auf einmal Zerifikat 2 dieses ist.

Variablen - du stellst dir das recht einfach vor - wer liesst die aus/ verarbeitet die weiter?

Unter Zeitdruck wird das nix, wenn man sich keine Zeit nimmt oder einen Profi, der das in Ruhe macht.

Ps: zweimal mehere schreiben - davon wirds nicht besser - gib dir etwas Mühe und trink nen Kaffee face-wink

Gruß


[OT]
warum hab ich manchmal den Eindruck, wer seinem Chef was versprochen hat und es selbst nicht lösen kann, hätte gerne hier in millisekunden die Lösung für die der Chef das Gehalt überweist ??

Vielleicht liegts daran, dass ein guter Arbeiter, das Problem gut beschreiben kann?
[/OT]
Member: ArthurNYArthur
ArthurNYArthur Feb 25, 2010 at 10:37:06 (UTC)
Goto Top
Hallo,

also eigentlich möchte ich Zertifikate exporiteren und abspeichern. aber es soll per Kommandos gehen.
Der Syntax zum exporieren von Zertifikaten lautet:

certutil -f -p 123456 -user -exportPFX 3ez56d1er70cf C:\Zertifikat\test\test333.pfx

Und ich will z.B diese Zeichenfolge "3ez56d1er70cf"(Seriennummer des Zertifikats) nicht manuell für jedes Zertifikat eingeben, sondern es soll unter einer Variable bzw. wenn es mehere Nummern gibt unter meheren Variablen gespeichert werden.
Dann soll jedes Zertifikat später mit dem exportbefehl exprtiert werden!

Ist halt ziemlich kompliziert die Sache face-smile

Und eigentlich wollte ich wissen, wie er nach dem Einlesen dieser Serial Number's es unter verschiedene variablen speichert? Da es ja sein kann, dass der erste User 5 Zertifikate besitzt, die gespeichert werden müssen und der nächste dann nur eine.

Die Nummern werden ja schon herausgelesen und in einer datei abgespeichert, die dann etwa so aussieht:

AUSGABE in Computername.log:

15489987aa
dfg899er7t895ew64twet4
8789rtzz8w8741wrt44t5eff7f
Jetzt möchte ich einfach jede dieser Serial Nummern mit einer Variable versehen, damit ich es mit dem Export-Befehl verarbeiten kann.

Ich hoffe, dass jetzt ungefähr klar ist worum es geht.
Danke für eure Geduld.
Member: Biber
Biber Feb 25, 2010 at 10:39:16 (UTC)
Goto Top
Moin ArthurNYArthur,

dieses Konzeptfragment, das du hier eben mal zusammengekloppt haben willst macht überhaupt keinen Sinn.
Aber da du keine Zeit hast, darüber nachzusinnen: hier die handwerkliche Umsetzung.

Wenn diese oben gepostete Ausgabe in einer Datei "Zertikate.txt" stünde, dann würde folgende Zeile vom CMD-Prompt aus das in Variablen "Serial1", "Serial2"...packen.
[die Zeile mit ">" am Anfang ist die Eingabe; ">" nicht mit eingeben]
>for /f "tokens=1,2,4 delims=: " %i in ('Findstr /C:"Serial Number" Zertifikate.txt^|findstr /n .') do @ECHO Set "%j%i=%k"
Set "Serial1=DREeret34356"
Set "Serial2=sdgtzu559e9r7uz"

In einem Batch jeweils zwei Prozentzeichen vor den Laufvariablen %i, %j...statt einem prozentzeichen am CMD-Prompt.
Und das Wort ECHO weglassen... das ist nur zur Demo da.

Mach einen Haken dran und wech damit.
Grüße
Biber
Member: ArthurNYArthur
ArthurNYArthur Feb 25, 2010 at 11:02:54 (UTC)
Goto Top
Hi Biber,

danke erstmal für deine Antwort!
Aber ich weiß nicht, ob ich mich falsch ausdrücke oder so, aber irgendwie versteht ihr mein Problem nicht ganz oder ich eure Posts face-smile

Also wenn ich diesen Code ausführe:

@echo off
SETLOCAL

@set LOG=%COMPUTERNAME%.log

FOR /F "tokens=3,*" %%i in ('certutil -store -user^|find "Serial Number:"') DO echo %%i >>%LOG%

@echo. >>%LOG%

ENDLOCAL

Dann speichert er mir dieses datei ab: Arthur-PC.log!
In dieser datei stehen dann von allen Zertifikaten, die ich habe die Nummern
So sieh es dann etwa aus:
15489987aa
dfg899er7t895ew64twet4
8789rtzz8w8741wrt44t5eff7f

Jetzt möchte ich jeder einzelnen nummer automatisch eine Variable zuordnen.
Wenn ich das richtig verstehe weise ich das mit:
Set "Serial1=DREeret34356"
Set "Serial2=sdgtzu559e9r7uz"

nur manuell zu, d.h. bei anderen Zertifikaten müsste iches wieder ändern, bzw. erweitern...oder verstehe ich etwas falsch?

Er soll irgendwie die nummer lesen und z.b variable i zuordnen, dann weiterlesen und nächste nummer der variable j zuordnen uns so weiter.
Oder halt au dieser Arthur-Pc.log auslesen und dann jeweils eine variable zuordnen.
Mitglied: 60730
60730 Feb 25, 2010 at 11:37:23 (UTC)
Goto Top
????
sondern es soll unter einer Variable bzw. wenn es mehere Nummern gibt unter meheren Variablen gespeichert werden.
..und noch zweimal mehere dazu, statt das beanstandete zu korrigieren - wer glaubt Ihr denn findet später unter diesen Worten noch eine Frage, die evtl zielführend beantwortet wurde? ;-(

for /f %i in (%COMPUTERNAME%.log) do echo %i

for /f %i in (%COMPUTERNAME%.log) do certutil -f -p 123456 -user -exportPFX %i C:\Zertifikat\test\test333.pfx
Risiken und Nebenwirkungen usw usf....
Member: ArthurNYArthur
ArthurNYArthur Feb 25, 2010 at 14:21:19 (UTC)
Goto Top
Danke, das funktioniert! Man und ich mache es mir so kompliziert face-smile