Hallo!
wenn ich in cmd direkt eingebe wmic volume > test.txt bekomme ich eine normale Textausgabe
wenn ich den Befehl in eine batchdatei mit ein paar weiteren Befehlen einbaue stehen der Ausgabe zwischen den einzelnen Zeichen lauter weitere Leerzeichen (also statt TEST steht dann T E S T)
das nervt, v. a. weil ich keine Ahnung habe warum das so ist und wie ich es verhindern kann
= kann mir da jemand helfen und einen Ansatzpunkt geben?
DANKE! cu kai
Hallo,
wenn ich den Befehl wmic volume > test.txt über eine Batchdatei durchführe, erhalte ich keine andere Ausgabe als bei der direkten Befehslzeileneingabe - es werden keine Blanks eingefügt. Vielleicht liegt es an den „paar weiteren Befehlen“, die ich allerdings nicht kenne.
LG Culles
Hallo!
wie Du sagst, der Befehl allein in einer batch funzt richtig, aber schon mit folgendem Inhalt nimmer:
set protokoll=test.txt
echo test>%protokoll%
wmic volume>>%protokoll%
wenn man die zweite Seite weglässt, gehts wieder = ich hab keine Ahnung, wieso ein einfaches echo test zum Erstellen einer neuen/leeren Ausgabedatei (statt immer nur anhaengen) die folgenden Ausgaben so verändert!
ich bin zu doof für diese Welt
cu kai
Hallo!
Der Effekt ist durch unterschiedliches Encoding der Datei zu erklären.
Wenn die Ausgabe von echo die Datei erzeugt, ist sie in „normalem“ ANSI (also 1 Byte/Zeichen).
Die Ausgabe von wmic erfolgt aber als „Windows UCS-2 Little Endian“, wie man bspw. mit Notepad++ sehen kann.
Dabei hat jedes Zeichen 2 Byte.
Die „Leerzeichen“ sind jeweils die 0 (NUL) im höherwertigen Byte.
Gruß,
Martin
Hallo Martin!
Danke für die Info, aber ganz folgen kann ich (noch) nicht:
-
sind es ASCII-Codes 32 zwischen den Einzelbuchstaben
(cut+paste aus txt-Datei in Excel und CODE(TEIL(…))) -
musste dann wmic immer so arbeiten und nicht mal so, mal so, oder?
was mich wirklich wundert ist, dass wmic abhängig vom vorhandensein eins echo-Befehls oberhalb sich unterschiedlich verhält… das raff ich nicht…
cu kai
Hallo!
Nein, es ist kein ASCI(32), sondern ASC(0).
Die Ausgabe von wmic ist auch immer gleich, das einzige, was unterschiedlich ist, ist das Encoding der angelegten Datei.
echo gibt immer ASCII (8bit-Zeichen) aus, wmic gibt immer 16bit-Zeichen aus.
Die Konsole scheint 16bit-Zeichen darzustellen, weswegen Du dort keine „Leerzeichen“ siehst.
Wird die Datei über die erste Ausgabe von echo angelegt, ist hinterlegt, dass jedes Zeichen 8 bit hat, was aber bei der wmic-Ausgabe nicht stimmt.
Stammt die erste Ausgabe von wmic, wird in der Datei hinterlegt, dass jedes Zeichen 16bit lang ist, damit gibt es keine „Leerzeichen“.
Gruß,
Martin
Hallo Martin!
wieder was gelernt…
also folgendes versucht:
_- wmic bios| find „nix“ >test.txt
- echo asjdhfgsadjf >>test.txt
- wmic bios >>test.txt_
(also test.txt mit wmic erzeugt = echo-Ausgabe normal, Rest aber doch wieder „zweibuchstabig“ wie bisher)
nächster Versuch:
_- wmic bios >test.txt
- echo asjdhfgsadjf >>test.txt
- wmic bios >>test.txt_
(alles ab echo-Ausgabe nur noch Hieroglyphen bzw. Sonderzeichenkästchen)
es muss doch irgendwie möglich sein, echo und wmic zu mischen, oder??
weil sowas funzt nämlich:
for /f " usebackq skip=%skip% delims=#" %%i in (wmic %part% get %para%
) do (
call :info „%name%“ „%%i“ %5 %6 %7
goto :eof
)
goto :eof
also letzter Versuch:
_- echo asjdhfgsadjf >test.txt
- wmic bios |find /v „asjkhgfsdf“ >>test.txt_
HEUREKA: so funzt es, warum auch immer sowas sein muss - da muss ja auch erst mal einer draufkommen… (für find ist die wmic-Ausgabe ein neuer pipe, den find dann in 1-byte-pro-Zeichen-Text umwandelt, dabei aber „asjkhgfsdf“ nicht findet, also alles weitergibt und DAS kann man dann mit echo mischen…)
Dank Martin, konnt ich es lösen
cu kai