WinFuture-Forum.de: Suche in Testdateien - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Suche in Testdateien


#1 Mitglied ist offline   stefan4711 

  • Gruppe: aktive Mitglieder
  • Beiträge: 41
  • Beigetreten: 22. April 20
  • Reputation: 0

geschrieben 12. Mai 2020 - 09:39

Liebe Scriptergemeinde,

ich habe folgendes Problem, ich versuche mit einer Batch einen Registrierungsprozess zu automatisieren. Wir haben ein Verzeichnis mit Dateien für jeden Rechner, in denen jweils eine Reg Nummer für Windows drin steht.
Um die entsprechende Datei zu finden, wird zunächst der Rechner abgfefragt PCNAME. Dzu gehe ich wie folgt vor:

cd c:\>nul 2>&1
cd c:\LIZ>nul 2>&1
FOR /F "tokens=*" %%F IN ('findstr /S /M /C:"%pcname%" *') DO (
SET "dat=%%F" 
)

ECHO Lizensdatei: %dat%




Damit habe ich die entsprechende Datei, hier steht diese Nummer drin. Nun soll dort die Zeile mit der Reg nummer gesucht werden, diese Zeile sieht exemplarisch wie folgt aus:

- Win10 Ent <größerer Leerraum> AAAAA-BBBBB-CCCCC-MQ6P2-MP2JR

Leider komem ich da nicht weiter. Für Hilfe wäre ich sehr dankbar



lg

Dieser Beitrag wurde von stefan4711 bearbeitet: 12. Mai 2020 - 09:42

0

Anzeige



#2 Mitglied ist offline   Shannon 

  • Gruppe: aktive Mitglieder
  • Beiträge: 131
  • Beigetreten: 12. Februar 13
  • Reputation: 11
  • Geschlecht:unbekannt

geschrieben 12. Mai 2020 - 15:03

Das hier danach anhängen:


::..
FOR /F "tokens=3" %%F IN ('findstr /C:"Win10 Ent" %dat%') DO (
   SET "dat2=%%F" 
)

ECHO gefunden: %dat2%




"tokens=3" = Stringposition und Suchstring "win10 Ent" evtl. anpassen.

g.s.

edit: /S entfernt

Dieser Beitrag wurde von Shannon bearbeitet: 12. Mai 2020 - 15:06

0

#3 Mitglied ist offline   stefan4711 

  • Gruppe: aktive Mitglieder
  • Beiträge: 41
  • Beigetreten: 22. April 20
  • Reputation: 0

geschrieben 12. Mai 2020 - 17:05

Danke vielmals,

geht zumindest schon mal in die richtige Richtung, aber wenn ich das so mache


SET Lizpfad=c:\LIZ

::PCname aus pcname.txt holen
cd c:\>nul 2>&1
cd c:\LIZ>nul 2>&1
FOR /F "tokens=*" %%F IN ('findstr /S /M /C:"%pcname%" *') DO (
SET "dat=%%F" )

FOR /F "tokens=3" %%F IN ('findstr /C:"Win10 Ent" %dat%') DO (
   SET "dat2=%%F" 
)

ECHO gefunden: %dat2%
PAUSE



kommt als Ergebnis gefunden:Ent

er soll mir aber die Nummer in die Variable schreiben, noch mal die Zeile in den dateien sieht do aus:

- Win10 Ent <großer Leerraum> aaaa-bbbbb-ccccc-ddddd-eeeee
0

#4 Mitglied ist offline   Shannon 

  • Gruppe: aktive Mitglieder
  • Beiträge: 131
  • Beigetreten: 12. Februar 13
  • Reputation: 11
  • Geschlecht:unbekannt

geschrieben 12. Mai 2020 - 17:11

ok, das "-" habe ich übersehen.
Also muß "tokens=4" geschrieben werden.

g.s.
0

#5 Mitglied ist offline   stefan4711 

  • Gruppe: aktive Mitglieder
  • Beiträge: 41
  • Beigetreten: 22. April 20
  • Reputation: 0

geschrieben 17. Mai 2020 - 14:59

Ich bin es noch mal,

ich habe mir nun gedacht, es wäre vielleicht einfacher unsere Volumenlizenzen aus einer Textdatei auszulesen. Hier ergibt sich aber das Problem, dass die Nummer nicht immer am selben Tokens plaziert ist. Die Datei sieht exemplarisch so aus:

- Windows 10 Pro aaaaa-bbbbb-ccccc-ddddd-eeeee

- Win10 Ent - aktueller Schlüssel fffff-ggggg-hhhhh-iiiii-jjjjj
- Win10 Ent - alter Schlüssel jjjjj-kkkkk-lllll-mmmmm-nnnnn

Gibt es für einen solchen Fall eine musterbasierte Suchtechnik, wo geschaut wird an welcher stelle 5 zeichen sind, dies 5 mal und durch - getrennt? Das wäre natürlich viel eleganter in unserem Falle


Danke noch mal für Deine Mithilf


lg

und schönen Sonntag noch
0

#6 Mitglied ist offline   Shannon 

  • Gruppe: aktive Mitglieder
  • Beiträge: 131
  • Beigetreten: 12. Februar 13
  • Reputation: 11
  • Geschlecht:unbekannt

geschrieben 17. Mai 2020 - 18:32

Wenn man die txt-Datei anders aufbaut gehts ganz einfach:

Rechnername1 Liz-Key txt txt ...
Rechnername2 Liz-Key txt txt ...

suche nach Rechnername mit "tokens=2"

g.s.
0

#7 Mitglied ist offline   stefan4711 

  • Gruppe: aktive Mitglieder
  • Beiträge: 41
  • Beigetreten: 22. April 20
  • Reputation: 0

geschrieben 18. Mai 2020 - 08:00

Ok wenns immer an der selben Stelle steht ist klar, aber ne Aret Mustersuche lässt sich nicht realisieren?


lg und eine
schöne Woche
0

#8 Mitglied ist offline   Shannon 

  • Gruppe: aktive Mitglieder
  • Beiträge: 131
  • Beigetreten: 12. Februar 13
  • Reputation: 11
  • Geschlecht:unbekannt

geschrieben 18. Mai 2020 - 11:08

geht schon, über reguläre Ausdrücke.
Aber wenn der Liz-Key schon bekannt ist, warum danach suchen?
Und eine Rechnerzuordnung ist aus deinem Beispiel nicht ersichtlich.

g.s.
0

#9 Mitglied ist offline   stefan4711 

  • Gruppe: aktive Mitglieder
  • Beiträge: 41
  • Beigetreten: 22. April 20
  • Reputation: 0

geschrieben 18. Mai 2020 - 20:57

ist ja nicht bekannt soll ja aus zig dateien rausgesucht werden, wie müßte man da vorgehen?
0

#10 Mitglied ist offline   Shannon 

  • Gruppe: aktive Mitglieder
  • Beiträge: 131
  • Beigetreten: 12. Februar 13
  • Reputation: 11
  • Geschlecht:unbekannt

geschrieben 20. Mai 2020 - 19:44

ok, dann hätte ich noch das hier anzubieten:


 @echo off
 setlocal ENABLEEXTENSIONS
 Setlocal EnableDelayedExpansion

SET Lizpfad=c:\LIZ

::PCname aus pcname.txt holen
cd /d c:\LIZ>nul 2>&1
FOR /F "tokens=*" %%F IN ('findstr /S /M /C:"%pcname%" *') DO (
SET "dat=%%F" )

FOR /F "tokens=*" %%F IN ('findstr /R ".....-.....-.....-.....-....." %dat%') DO (
   Call :Get_Key %%F
   if not "!LIZ_KEY!"=="" (
         echo. & echo. +++++++!LIZ_KEY!+++++++
   )
)

   pause
Exit /B 0



====================================================
:Get_Key

   set LIZ_KEY=

:OPTION_loop
   if "%1"=="" (
      Exit /B 0
   ) else (
      echo %1 | findstr /R ".....-.....-.....-.....-....." >nul 2>&1
      if !errorlevel! equ 0 (
         set LIZ_KEY=%1
         Exit /B 0
      )
      shift
   )
goto OPTION_loop

Exit /B 0




viel mehr ist aus MS-batch/cmd nicht herauszuholen

g.s.
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0