Dieses Skript macht, was ich will – es erzeugt das Ergebnis in der angegebenen TXT-Datei.
(@for /F "delims=" %I in ('wmic path Win32_VideoController get DriverVersion /VALUE') do @for /F "tokens=1* delims==" %J in ("%I") do @echo/%K) > "C:\Users\Public\AppData\Roaming\GPU\DriverVersion.txt"
Allerdings scheint es, als würde am Ende des Ergebnisses eine zusätzliche Leerzeile hinzugefügt. Kann ich das irgendwie verhindern, da das Zeilenzählergebnis aus diesem Text sehr wichtig ist?
Antwort1
Es gibt keine zusätzliche Leerzeile am Ende des Ergebnisses (bewiesen durchfindstr.exe
):
d:\bat> (@for /F "delims=" %I in ('wmic path Win32_VideoController get DriverVersion /VALUE') do @for /F "tokens=1* delims==" %J in ("%I") do @echo/%K) > DriverVersion.txt
d:\bat> findstr /N "^" DriverVersion.txt
1:23.21.13.8813
d:\bat> findstr /N "$" DriverVersion.txt
1:23.21.13.8813
Sie können jedoch am Ende des Ergebnisses wie folgt eine zusätzliche Leerzeile hinzufügen:
d:\bat> echo(>> DriverVersion.txt
d:\bat> findstr /N "^" DriverVersion.txt
1:23.21.13.8813
2:
d:\bat> findstr /N "$" DriverVersion.txt
1:23.21.13.8813
2:
Bedeutung des /N
Schalters beachten:
/N
Drucken Sie die Zeilennummer vor jeder übereinstimmenden Zeile.
und Suchmuster:
^
Zeilenposition: Zeilenanfang$
Zeilenposition: Zeilenende
Siehe auchWindows-Batch: Echo ohne neue Zeile: <nul set /p =%K
anstelle von verwenden echo/%K
.
d:\bat> (@for /F "delims=" %I in ('wmic path Win32_VideoController get DriverVersion /VALUE') do @for /F "tokens=1* delims==" %J in ("%I") do @<nul set /p =%K) > DriverVersion.txt
d:\bat> findstr /N "^" DriverVersion.txt
1:23.21.13.8813
d:\bat> findstr /N "$" DriverVersion.txt
d:\bat>