Actualmente estoy escribiendo un archivo batch .bat que ejecuta un archivo de instalación. Antes de que ejecute el archivo de instalación compruebo si el directorio existe para evitar la reinstalación de la aplicación.
Para ello utilizo una sentencia If Not Exist filename
. Si el archivo instalado no existe, entonces ejecuto el archivo de instalación.
Por alguna razón, cuando lo pruebo con la aplicación donde ya ha sido instalada, sigue intentando reinstalar la aplicación sobre ella.
Aquí hay un fragmento de mi código:
cd "C:\Documents and Settings\John\Start Menu\Programs\"
pause
If NOT exist "Software Folder"\ (
start \\filer\repo\lab\"software"\"myapp"\setup.exe
pause
)
Donde SoftwareFolder
es un subdirectorio de "C:\NDocuments and Settings\NJohn\NStart Menu\NPrograms".
Estoy comprobando si existe en mi carpeta Programs
.
Sé que nada está mal con mi comando start
. Tengo la sensación de que algo está mal con mi comando de inicio CD
o uno de sus parámetros.
Muchas gracias, chicos.
Me he dado cuenta de algunos problemas con esto que podrían ser útiles para que alguien que acaba de empezar, o un usuario algo inexperto, lo sepa. Primero...
CD /D "C:\Documents and Settings\%username%\Start Menu\Programs\"
dos cosas, una es que un /D después del CD puede ser útil para asegurarse de que el directorio se cambia, pero no es realmente necesario, en segundo lugar, si usted va a pasar esto de usuario a usuario tiene que añadir, en lugar de su nombre, el código %username%, esto hace que el código utilizable en cualquier equipo, siempre y cuando tengan su archivo setup.exe en la misma ubicación que en su equipo. por supuesto, asegurarse de que es más difícil. también...
start \\filer\repo\lab\"software"\"myapp"\setup.exe
el código de inicio aquí, se puede configurar así, pero la sintaxis correcta es
start "\\filter\repo\lab\software\myapp\" setup.exe
Esto ejecutará: setup.exe, ubicado en: {{filter}}repo\\Nde la biblioteca...etc.\N-.
Como en la respuesta de Escobar Ceaser, sugiero usar comillas alrededor de toda la ruta. Es la forma común de envolver toda la ruta en "", no sólo los nombres de los directorios separados dentro de la ruta.
Tuve un problema similar que no funcionó para mí. Pero no era una opción para usar "" dentro de la ruta para los nombres de los directorios separados porque la ruta contenía variables de entorno, que ellos mismos cubren más de una jerarquía de directorios. La conclusión fue que me faltó el espacio entre el cierre " y el (
La versión correcta, con el espacio antes del paréntesis, sería
If NOT exist "C:\Documents and Settings\John\Start Menu\Programs\Software Folder" (
start "\\filer\repo\lab\software\myapp\setup.exe"
pause
)