spsman
Goto Top

FOR-Schleife Ausgabe funktioniert nicht

Hi,

ich würde gerne Dateien im Format "16_Letzen Zeichen Key_Rechnername.txt erstellen.
Script:
1
cscript "%programfiles(x86)%\Microsoft Office\Office16\OSPP.VBS" /dstatus   

Ausgabe (Datei):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Microsoft (R) Windows Script Host, Version 5.812
Copyright (C) Microsoft Corporation. Alle Rechte vorbehalten.

---Processing--------------------------
---------------------------------------
PRODUCT **
SKU ID:**
LICENSE NAME: Office 19, Office19HomeBusiness2019R_Retail edition
LICENSE DESCRIPTION: **Office 19**, RETAIL channel
BETA EXPIRATION: 01.01.1601
LICENSE STATUS:  ---LICENSED--- 
Last 5 characters of installed product **key: 1A2B3**
---------------------------------------
---------------------------------------
---Exiting-----------------------------
Diese Ausgabe muss ich irgendwie mit For- Schleifen die Zeilen durchlaufen und dann die Wörter in Variablen exportieren würde ich vermuten... Allerdings habe ich For-Schleifen in Batch noch nie so hinbekommen.

Mein Anfang:
1
2
3
4
5
6
7
8
9
10
Set/a  z=1
for /f "skip=7 tokens=3,4,8" %f in ('P:\01 Administration\Austausch MA\Robert\Office_Liz\16_WICHERT0519.txt') do   
( 
IF %%z=1(
Echo %%f %%g)
IF %%z=6(
Echo %%h)
set /a z+=1
)
pause

Das Programm beende sich ohne ausgabe...

Content-ID: 497792

Url: https://administrator.de/forum/for-schleife-ausgabe-funktioniert-nicht-497792.html

Ausgedruckt am: 04.04.2025 um 22:04 Uhr

aqui
aqui 24.09.2019 um 16:13:30 Uhr
Goto Top
Vielleicht solltest du die IDs besser anonymisieren wenn man sie hier offen postet..?!
SPSman
SPSman 24.09.2019 um 16:18:22 Uhr
Goto Top
danke face-smile
Crusher79
Crusher79 24.09.2019 um 18:46:14 Uhr
Goto Top
Hi,

wenn du dich mit Powershell anfreuden könntest, hätte man am Ende gleich ne saubere Tabelle. Z.B. hier: https://dashdot.de/2018/11/08/product-key-von-office-per-powershell-ausl ...

Soll heiss, du kannst die relevanten Inforamtionen am Schluß aufbereiten.

Wie viele PCs hast du Bzw. wie groß ist euer Portfolio? Software wie Lansweeper ist bist zu 100 Assets kostenlos und gerneirt automatisch CSV Dateien mit allen Lizenzen. Man kann später filtern und auch natürlich anonymisieren.

https://www.lansweeper.com/knowledgebase/freeware-and-trial-limitations/

Das Problem bei der Textdatei ist, dass es eine Textdatei ist... PS hat Objekte . Du hast gleich die richtige Struktur hinter. Wäre einfacher

mfg Crusher
SPSman
SPSman 24.09.2019 um 20:59:03 Uhr
Goto Top
Hi,

wir haben ca. 50 Geräte und vom office 2013 bis Office 2019 alles. wollte es als Anmeldescript laufen lassen ud dann in eine Lizenzübersichtstabelle überführen.

Lansweeper schau ich mir mal an. Problem nicht alle Geräte sind immer an netz (manche nur 1x im Monat....)

Aus der Textdatei eine CSV zu machen ist ja nciht schwer ;)
SPSman
SPSman 30.09.2019 um 09:20:37 Uhr
Goto Top
Hat noch jmd eine Idee warum meine For-Schleife nicht läuft?
SPSman
SPSman 07.10.2019 um 14:18:47 Uhr
Goto Top
Hi,

hat jemand eine Tipp wie ich die 5 Lizenzstellen extrahiert bekomme?

die Batch For-Schleife will bei mir einfach nicht laufen...
SPSman
SPSman 08.10.2019 aktualisiert um 13:59:15 Uhr
Goto Top
Hi,

hier meine Lösung:
1. Startscript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
IF EXIST "%programfiles(x86)%\Microsoft Office\Office16" (  
cscript "%programfiles(x86)%\Microsoft Office\Office16\OSPP.VBS" /dstatus >> "\\Serverordner\16_%computername%.txt"  
EXIT
)
IF EXIST "%programfiles(x86)%\Microsoft Office\Office15" (  
cscript "%programfiles(x86)%\Microsoft Office\Office15\OSPP.VBS" /dstatus >> "\\Serverordner\15_%computername%.txt"  
EXIT
)
IF EXIST "%programfiles(x86)%\Microsoft Office\Office13" (  
cscript "%programfiles(x86)%\Microsoft Office\Office13\OSPP.VBS" /dstatus >> "\\Serverordner\13_%computername%.txt"  
EXIT
)
IF EXIST "%programfiles(x86)%\Microsoft Office\Office12" (  
cscript "%programfiles(x86)%\Microsoft Office\Office12\OSPP.VBS" /dstatus >> "\\Serverordner\12_%computername%.txt"  
)

EXIT


2. Auswerte Script(PowerShell)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Set-Location -Path '\\Serverordner' # Ordnerpfad zuweisen  
$Dateien = gci |select Name # Dateinamen auslesen
$Trennzeichen="`t" # CSV-Trenn Definieren -TAB-  
#$Dateien

('Version','Rechner','LizNummer')-join $Trennzeichen |Out-File Uebersicht.csv # Header Definieren udn Datei erstellen  


foreach ($Datei in $Dateien){#Dateien durchlaufen
$Inhalt = get-content $Datei.Name #inhalt der aktuellen Datei auslesen
$zei = Select-String -Path $Datei.Name -SimpleMatch "---LICENSED---" -List | select LineNumber #Zeile für gültige Lizen finden nur Erster fund  
IF($zei){#Variable nicht NULL
    $Liz=$Inhalt[$zei.LineNumber].Substring(44,5)# die 5 Lizenzeichen Extrahieren
    $VersNr=$Datei.Name.Substring(0,2).Replace(".txt","")#Versionsnummer Extrahieren  
    ($VersNr,$Datei.Name.Substring(3).Replace(".txt",""),$Liz)-join $Trennzeichen|Out-File Uebersicht.csv -Append #CSAV-Zeile Erstelle un d in Datei schreiben  
    }
}

Gruß