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:
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
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
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:
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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 211515
Url: https://administrator.de/contentid/211515
Ausgedruckt am: 22.11.2024 um 09:11 Uhr
5 Kommentare
Neuester Kommentar
Hallo Invisan!
Würde es Dir denn genügen, wenn jeweils der Rechnername vor der Auflistung ausgegeben wird - ungetestet etwa so:
Grüße
bastla
[Edit] Die 2 nicht genannten Fehler ebenfalls behoben [/Edit]
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
)
bastla
[Edit] Die 2 nicht genannten Fehler ebenfalls behoben [/Edit]
Hallo Invisan!
Neuer Versuch:
Grüße
bastla
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
)
bastla