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-Key: 211515

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

Printed on: April 16, 2024 at 04:04 o'clock

Member: bastla
bastla Jul 15, 2013 updated at 15:47:24 (UTC)
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]
Member: Invisan
Invisan Jul 15, 2013 at 15:42:02 (UTC)
Goto Top
Jop würde es. Nachdem ich zwei Fehler behoben habe funktioniert es auch. Leider bekomme ich die selbe ausgabe wie oben.
Member: bastla
bastla Jul 15, 2013 at 15:50:39 (UTC)
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
Member: Invisan
Invisan Jul 15, 2013 at 16:01:43 (UTC)
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
Member: Invisan
Invisan Jul 16, 2013 at 07:13:13 (UTC)
Goto Top
Moin Bastla funktioniert top. Nochmal herzlichen Dank dafür face-smile