Este script hace lo que quiero: producir el resultado en el archivo de texto anotado.
(@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"
Sin embargo, parece agregar una línea en blanco adicional en la parte inferior del resultado. ¿Hay alguna manera de evitar que esto suceda ya que el resultado del recuento de líneas de este texto es muy importante?
Respuesta1
No hay ninguna línea en blanco adicional en la parte inferior del resultado (probado usandofindstr.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
Sin embargo, puede agregar una línea en blanco adicional en la parte inferior del resultado de la siguiente manera:
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:
Tenga en cuenta el significado del /N
interruptor:
/N
Imprima el número de línea antes de cada línea que coincida.
y patrones de búsqueda:
^
Posición de línea: comienzo de línea$
Posición de línea: final de línea
Ver tambiénLote de Windows: eco sin nueva línea: utilizar <nul set /p =%K
en lugar de 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>