invisan
Goto Top

Output einer Batch wird nur einzeilig in Textdatei geschrieben.

Hallo zusammen,

ich versuche mich derzeit etwas an der Batch Programmierung.

Ich wollte für mich in der Firma ein kleines Programm schreiben was eine Liste von Rechnern die in einer Textdatei definiert sind via wmic abfragt und den Output getrennt in eine Textdatei schreibt. Das funktioniert soweit auch ganz gut bis auf das der WMIC Output statt normal in mehreren Zeilen in eine gequetscht wird.
Frage ich die WMIC Zeile einzeln via wmic /node:Rechnername product where 'name like "Java%%"' list status >> D:\test.txt ab funktioniert das ganze einwandfrei.

Beispiel:

8b5df3c13fa01334ee8e77d0cb23c541


Der Code sieht im moment folgendermaßen aus.


@echo off
SetLocal EnableDelayedExpansion
set L=1
for /F "delims=" %%a in (D:\liste.txt) do (
set line=%%a
echo !line! >> D:\test.txt
wmic /node:!line! product where 'name like "Java%%"' list status >> D:\test.txt
echo. >> D:\test.txt
set /a L=!L!+1
)


Ändere ich den Code folgendermaßen:


@echo off
SetLocal EnableDelayedExpansion
set L=1
for /F "delims=" %%a in (D:\liste.txt) do (
set line=%%a
wmic /node:!line! product where 'name like "Java%%"' list status >> D:\test.txt
set /a L=!L!+1
)


Bekomme ich die Ausgabe zwar im richtigen Format

b0948bdae4d2715281b03bbab4071118


Allerdings habe ich dann keine Ansicht auf welchem Rechner der Befehl durchgeführt wurde und dementsprechend ist das ganze sinnlos.


Ich könnte zwar jede Abfrage in eine einzelne Textdatei schreiben lassen, aber bei mehreren 100 Rechnern ist das ganze dann doch etwas mühsam.

Daher würde ich eine Lösung in einer TXT bevorzugen.


Hoffe es kann wer helfen.


Mit freundlichen Grüßen,

Invisan

Content-ID: 211515

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

Ausgedruckt am: 22.11.2024 um 09:11 Uhr

bastla
bastla 15.07.2013 aktualisiert um 17:47:24 Uhr
Goto Top
Hallo Invisan!

Würde es Dir denn genügen, wenn jeweils der Rechnername vor der Auflistung ausgegeben wird - ungetestet etwa so:
@echo off & setlocal
for /F "tokens=1* delims=:" %%a in ('findstr /n "^" "D:\liste.txt") do (  
    >>D:\test.txt echo %%b
    >>D:\test.txt echo =======================
    >>D:\test.txt wmic /node:%%b product where 'name like "Java%%"' list status  
    >>D:\test.txt echo(
    set /a L=%%a
)
Grüße
bastla

[Edit] Die 2 nicht genannten Fehler ebenfalls behoben [/Edit]
Invisan
Invisan 15.07.2013 um 17:42:02 Uhr
Goto Top
Jop würde es. Nachdem ich zwei Fehler behoben habe funktioniert es auch. Leider bekomme ich die selbe ausgabe wie oben.
bastla
bastla 15.07.2013 um 17:50:39 Uhr
Goto Top
Hallo Invisan!

Neuer Versuch:
@echo off & setlocal
for /F "tokens=1* delims=:" %%a in ('findstr /n "^" "D:\liste.txt") do (  
    >>D:\test.txt echo %%b
    >>D:\test.txt echo =======================
    >"%temp%\Prod.txt" wmic /node:%%b product where 'name like "Java%%"' list status  
    >>D:\test.txt type "%temp%\Prod.txt"  
    >>D:\test.txt echo(
    set /a L=%%a
)
Grüße
bastla
Invisan
Invisan 15.07.2013 um 18:01:43 Uhr
Goto Top
Hi bastla,

danke dir funktioniert super.

Ich unterzieh das ganze morgen wenn ich in der Firma bin nochmal nem genaueren Test ^^


Mfg Invisan
Invisan
Invisan 16.07.2013 um 09:13:13 Uhr
Goto Top
Moin Bastla funktioniert top. Nochmal herzlichen Dank dafür face-smile