Problema para generar archivo de texto con .bat

Este es el archivo deseado:

ReaderID:<104>
ActiveMQ_enabled:<0>
Default Operation:<0>
Machine Quantity:<200>
Time Limit:<0>
Manual Input:<0>
DB String:<>
Lot Selection:<1>

Cuando lo proceso con los comandos usuales obtengo lo siguiente:

ReaderID:104

ActiveMQ_enabled:0
Default Operation:0
Machine Quantity:300
Time Limit:0
Manual Input:0
DB String:0
Lot Selection:1

O bien :

"ReaderID:<104>"
"ActiveMQ_enabled:<0>"
"Default Operation:<0>"
"Machine Quantity:<200>"
"Time Limit:<0>"
"Manual Input:<0>"
"DB String:<>"
"Lot Selection:<1>"

Este es código del .bat

cd "C:\Program Files (x86)\patitos"
@echo off
set/p numero1= Coloque el valor reader ID.
Echo.
Echo ReaderID:<%numero1%> >Preferences.txt
PAUSE
echo ActiveMQ_enabled:<0> >>Preferences.txt
PAUSE
echo Default Operation:<0> >>Preferences.txt
PAUSE
echo Machine Quantity:<300> >>Preferences.txt
PAUSE
echo Time Limit:<0> >>Preferences.txt
PAUSE
echo Manual Input:<0> >>Preferences.txt
PAUSE
echo DB String:<0> >>Preferences.txt
PAUSE
echo Lot Selection:<1> >>Preferences.txt
PAUSE

En mi opinión los <> que requiere mi aplicación confunden la creación del archivo de texto generando que no se reconozca como ruta valida, por lo que decidí poner unas comillas y el problema es que se me genera el archivo de texto pero con las comillas, lo cual no es funcional.

¿Es posible generar este archivo de texto con las condiciones mencionadas antes?

¿Es posible generar el archivo de texto con las comillas y luego removerlas?

1 Respuesta

Respuesta
1

La programación bat tiene estos problemas de "transparencia". En algunos casos hay que "escapar" algunos caracteres aplicándoles algún tratamiento especial, a veces precediéndolos de otros caracteres, otras veces duplicándolos. Los caracteres > y < son del primer tipo y hay que precederlos del ^. Prueba con esto:

@echo off
set/p numero1= Coloque el valor reader ID.
Echo.
Echo ReaderID:^<%numero1%^> >Preferences.txt
PAUSE
echo ActiveMQ_enabled:^<0^> >>Preferences.txt
PAUSE
echo Default Operation:^<0^> >>Preferences.txt
PAUSE
echo Machine Quantity:^<300^> >>Preferences.txt
PAUSE
echo Time Limit:^<0^> >>Preferences.txt
PAUSE
echo Manual Input:^<0^>>>Preferences.txt
PAUSE
echo DB String:^<0^> >>Preferences.txt
PAUSE
echo Lot Selection:^<1^> >>Preferences.txt
PAUSE

¡Gracias! Voy a probarlo

Muchas gracias, el bache me ha funcionado desde mi cuenta de usuario, y te agradezco mucho porque sin tu ayuda no lo hubiera logrado

Ahora tengo otro tema cuando lo estoy simulando para subirlo como un bache del SCCM no me funciona. Me puedes ayudar?

Gracias 

Creo que si sirve el código, corriendo línea por línea

El asunto es que un colega de USA me dice que para correr ese bache desde el SCCM hay que cambiar el comando set por setx, pero no se que tan cierto sera, llevo varias horas con eso y nada. 

I think the issue is because set, sets a user environment variable. Try setx, which sets it for the whole system. https://ss64.com/nt/setx.html

No conozco el SCCM. He buscado en Wikipedia y he visto que es "... una solución que forma parte de la familia de productos Microsoft Servers..."

Sin embargo el pantallazo del CMD parece obtenido en un equipo con Windows 10. No acabo de entender como has ejecutado el BAT, porque parece que hace eco de los comandos del bat a la vez que lo ejecuta pero no veo cómo se ha "lanzado" el bat. El problema, en todo caso, parece ser que se toma como entrada para el set /P el comando que viene a continuación (echo.) Yo no veo razón para sustituir el SET por un SETX porque hasta dónde yo veo el problema seguiría estando en tomar como entrada lo que viene a continuación en lugar de esperar a que el usuario escriba el valor de la variable. De momento solo se me ocurre que pongas un PAUSE más entre el SET /P y el ECHO. Para ver si así te da la opción de escribir, aunque me temo que en ese caso tome el PAUSE como la entrada del SET /P

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas