Textdatei ändert nach Batchbearbeitung Schriftart
Und wieder ich....
Hallo alle zusammen.
Ich habe wieder ein eigenartiges Batch Problem.
Ich lasse mir mit folgendem Befehl in einer Batchdatei eine txt Datei erzeugen:
das Ergebnis in der txt sieht dann so aus:
Diese wird durch einem Start Batch aufgerufen. Die erzeugte txt Datei wird dann wieder von dem Start Batch wie folgt weiterverarbeitet:
Um die Anzahl der gefundenen Token zu bekommen
Dann um die "\" aus der Datei zu bekommen (an der Stelle Danke an an die vielen Supporter hier) :
was soweit auch ganz gut funktioniert, bis auf die Ausgabe in der temporären Datei die dann so aussieht:
Ich versuche die Daten nach dem letzten Backslash "03190215003965" zu extrahieren.
Dies ist die Seriennummer des USB Devices.
Um diese weiterverarbeiten zu können müsste ich die Backslash's wegbekommen da diese als Sonderzeichen in einem
Batchfile zu Fehlern bzw. Nichtverwendbarkeit führen.
Weiß jemand warum da nach dem ersetzen von "\" auf einmal "japanisch" in der Datei steht?
Hat das was mit dem Erzeugen mit WMIC zu tun?
Hat jemand eine Idee wie ich das extrahieren der Seriennummer besser oder einfacher gestallten könnte?
Für Eure Hilfe/Ideen wie immer Danke im Voraus!
Gruß und schon mal viele schöne bunte Eier
Steffen
Hallo alle zusammen.
Ich habe wieder ein eigenartiges Batch Problem.
Ich lasse mir mit folgendem Befehl in einer Batchdatei eine txt Datei erzeugen:
@echo on & setlocal
set "Datei=test1.txt"
wmic path CIM_LogicalDevice where "DeviceID like "%%VID_1059%%"" GET DeviceID > %Datei%
endlocal
das Ergebnis in der txt sieht dann so aus:
DeviceID
USB\VID_1059&PID_0019\03190215003965
USB\VID_1059&PID_0017\001104184812
Diese wird durch einem Start Batch aufgerufen. Die erzeugte txt Datei wird dann wieder von dem Start Batch wie folgt weiterverarbeitet:
Um die Anzahl der gefundenen Token zu bekommen
for /f "tokens=1,%OhneCR% delims=:" %%i in ('findstr /n $ %Datei%') do @(
for /l %%a in (%AllCount%) do @if %%i==%%a @echo %%j >> Token%TokenCount%.txt
)
set /a count=%AllCount%-1
Dann um die "\" aus der Datei zu bekommen (an der Stelle Danke an an die vielen Supporter hier) :
set "Von=^\"
set "Nach="
if exist "%TempDatei%" del "%TempDatei%"
for /f "usebackq delims=" %%i in ("%Datei%") do set "Line=%%i" & set "Line=!Line:%Von%=%Nach%!" & >>"%TempDatei%" echo !Line!
:: move "%TempDatei%" "%DateiNeu%"
::
for /f "delims=" %%i in ('findstr /n $ "%Datei%"') do set "Line=%%i" & call :ProcessLine
move "%TempDatei%" "%DateiNeu%"
:ProcessLine
for /f "tokens=1* delims=:" %%a in ("%Line%") do set "L=%%b"
if not defined L >>"%TempDatei%" echo
>>"%TempDatei%" echo !L:%Von%=%Nach%!
was soweit auch ganz gut funktioniert, bis auf die Ausgabe in der temporären Datei die dann so aussieht:
㉄㌺ഺ
Ich versuche die Daten nach dem letzten Backslash "03190215003965" zu extrahieren.
Dies ist die Seriennummer des USB Devices.
Um diese weiterverarbeiten zu können müsste ich die Backslash's wegbekommen da diese als Sonderzeichen in einem
Batchfile zu Fehlern bzw. Nichtverwendbarkeit führen.
Weiß jemand warum da nach dem ersetzen von "\" auf einmal "japanisch" in der Datei steht?
Hat das was mit dem Erzeugen mit WMIC zu tun?
Hat jemand eine Idee wie ich das extrahieren der Seriennummer besser oder einfacher gestallten könnte?
Für Eure Hilfe/Ideen wie immer Danke im Voraus!
Gruß und schon mal viele schöne bunte Eier
Steffen
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 563513
Url: https://administrator.de/forum/textdatei-aendert-nach-batchbearbeitung-schriftart-563513.html
Ausgedruckt am: 12.01.2025 um 04:01 Uhr
8 Kommentare
Neuester Kommentar
Das liegt an der Unicode-Ausgabe von wmic.
Ich würde es gleich so all in one machen statt alles immer überflüssigerweise in Textdateien auszulagern ...:
Noch ein Grund endlich auf Powershell umzusteigen ...
Ich würde es gleich so all in one machen statt alles immer überflüssigerweise in Textdateien auszulagern ...:
@echo off
for /f "delims=" %%a in ('powershell -EP Bypass -NoP -C "gwmi CIM_LogicalDevice -Filter \"DeviceID like '%%VID_1059%%'\" | %%{$_.DeviceID.split('\')[-1]}"') do echo %%a
Geht auch mit wmic ähnlich simpel.
Statt noch mal irgendwas in Dateien zu schreiben, arbeitest du anstelle der ECHO Anweisung einfach mit %%j weiter.
Steffen
@echo off &setlocal
for /f "delims=" %%i in ('wmic path CIM_LogicalDevice WHERE "DeviceID LIKE 'USB\\VID_1059&%%'" GET DeviceID /value') do for /f %%j in ("%%~nxi") do (
ECHO mach was mit %%j
)
pause
Steffen
kannst Du mir einen ganz kleinen Tipp geben wie das mit dem %%~nxi funktionobelt?
Führe mal ein FOR /?
aus. Da ist das recht gut erklärt. Das ~nx expandiert %%i zu Dateiname und Dateierweiterung. Nun fragst du dich wo du einen Dateipfad hast. Ganz einfach, hast du nicht Ich missbrauche die Modifikatoren für deinen Zweck, denn ... was ist denn Dateiname und Erweiterung in einem Pfad? Das was hinter dem letzten Backslash folgt. That's it Steffen
Und sollte München ausfallen - Wärst du in Köln/Bonn auch herzlich eingeladen!