BATCH quitar espacios y ultimo punto

Alien_crrpt

Estoy intentando que no parezcan espacios , o quitar los ultimos espacios (ahora mismo esta colando 2 al final) y el ultimo punto de cada variable "manu1,manu2,manu3"

@echo off
set "manu1="&for /f "skip=1 tokens=*" %%m in ('wmic baseboard get Manufacturer') do if not defined manu1 set "manu1=%%m"
rem now do things to %manu1%

set "manu2="&for /f "skip=1 tokens=*" %%m in ('wmic baseboard get product') do if not defined manu2 set "manu2=%%m"
rem now do things to %manu2%


set "manu3="&for /f "skip=1 tokens=*" %%m in ('wmic baseboard get serialnumber') do if not defined manu3 set "manu3=%%m"
rem now do things to %manu3%

echo VACIO >> "C:\Prueba\%manu1%_%manu2%_%manu3%_%computername%_%username%.txt"

Resultado del nombre del archivo:

ASUSTeK COMPUTER INC.  _BM6835_BM6635_BP6335  _131118356200235  _DESKTOP-43MG3EL_usuario

Como me gustaria que se quedara:

ASUSTeK COMPUTER INC_BM6835_BM6635_BP6335_131118356200235_DESKTOP-43MG3EL_usuario

o

ASUSTeKCOMPUTERINC_BM6835_BM6635_BP6335_131118356200235_DESKTOP-43MG3EL_usuario
Vashealer

para quitar los espacios y puntos en bash puedes usar sed por ejemplo:

echo "   string con espacios. y puntos.    " | sed 's/ //g; s/\.//g'

eso lo puedes pipear a lo que estás generando

2 2 respuestas
desu

#2 con tooling moderno:

1 1 respuesta
Alien_crrpt

#2 #3 Gracias. Creo que me confundi en el titulo era BATCH no BASH. :sweat_smile:

He creado este codigo, me faltaria quitar los puntos al final de las variables manu1 , manu2 y manu3
Lo que no se que comando seria para que me devuelva el ultimo caracter. Y luego tendre que hacer un if comparandolo si es un punto o no. Y una vez que sepa que es un punto, si supiera que comando me devuelve la longitud del string guardado dentro de la variable y el comando que recortara en 1 el valor del string lo tendria hecho. Soy un poco novato en Batch , creo que se nota.

@echo on
::setlocal EnableDelayedExpansion
set "manu1="&for /f "skip=1 tokens=*" %%m in ('wmic baseboard get Manufacturer') do if not defined manu1 set "manu1=%%m"
rem now do things to %manu1%
set "manu2="&for /f "skip=1 tokens=*" %%m in ('wmic baseboard get product') do if not defined manu2 set "manu2=%%m"
rem now do things to %manu2%
set "manu3="&for /f "skip=1 tokens=*" %%m in ('wmic baseboard get serialnumber') do if not defined manu3 set "manu3=%%m"
rem now do things to %manu3%

set ruta1="C:\Prueba\%manu1%_%manu2%_%manu3%_%computername%_%username%.txt"
echo Ruta 1 = [%ruta1%]
set ruta1=%ruta1: =%
@ echo. >> %ruta1%

Alien_crrpt

Perdonar por el doble post. Ya he avanzado y estoy asi:

@echo on
setlocal EnableDelayedExpansion
set "manu1="&for /f "skip=1 tokens=*" %%m in ('wmic baseboard get Manufacturer') do if not defined manu1 set "manu1=%%m"
rem now do things to %manu1%
set "manu2="&for /f "skip=1 tokens=*" %%m in ('wmic baseboard get product') do if not defined manu2 set "manu2=%%m"
rem now do things to %manu2%
set "manu3="&for /f "skip=1 tokens=*" %%m in ('wmic baseboard get serialnumber') do if not defined manu3 set "manu3=%%m"
rem now do things to %manu3%

echo %manu1%
set manu1=%manu1: =%
echo %manu1%

echo %manu2%
set manu2=%manu2: =%

echo %manu3%
set manu3=%manu3: =%
echo %manu2%

set ultimoCaracterManu1=%manu1:~-1%
echo %ultimoCaracterManu1%
pause
if %ultimoCaracterManu1%==. ( echo "Esto es lo que me falta cambiar del valor de manu1 por manu1 pero sin el punto" )

set ruta1="C:\Prueba\%manu1%_%manu2%_%manu3%_%computername%_%username%.txt"
echo Ruta 1=[%ruta1%]
set ruta1=%ruta1: =%

ECHO %ruta1% >> %ruta1%
PAUSE

Solo me faltaria hacer set manu1=%manu1% pero sin el punto. Pero no se como se hace. En java seria un substring desde la posicion 0 a la posicion menos 1.
set manu1 = %manu1: posicion 0 hasta la posicion -1%

Alien_crrpt

Pues conseguido con:

if %manu1:~-1%==. ( set manu1=%manu1:~0,-1% )
if %manu2:~-1%==. ( set manu2=%manu2:~0,-1% )
if %manu3:~-1%==. ( set manu3=%manu3:~0,-1% )

Ahora lo que estoy intentando es que cuando guarde en el fichero TXT los datos, guarde las tildes y los caracteres raros.
Por todos lados veo que tengo que poner chcp 65001 al principio del fichero BAT pero no funciona.

Usuarios habituales

  • Alien_crrpt
  • desu
  • Vashealer