
Tengo un archivo por lotes que debería funcionar en varios directorios:
debería buscar un archivo llamado "carpeta.jpg". Si existe, debería usarlo. si no existe, debería usar "front.jpg" y copiarlo a "cover.jpg". Suena sencillo.
El problema es que mis directorios contienen espacios en blanco (-).
El siguiente archivo por lotes produce un error. ¿Alguien puede indicarme cómo obtener un nombre de archivo que pueda usarse con el comando por lotes "EXISTS"?
También probé "./folder.jpg" sin éxito.
@echo off
set file=%CD%\folder.jpg
set
if exists %file% goto FOLDER
:FRONT
@echo ** copy front.jpg to cover.jpg
copy front.jpg cover.jpg
goto PROCESS
:FOLDER
@echo ** rename folder.jpg to cover.jpg
ren folder.jpg cover.jpg
:PROCESS
@echo ** call dpi
call dpi
@echo ** call size
call size
¡Gracias de antemano!
Respuesta1
Su principal problema es que la sintaxis esIF EXIST
Nombre del archivo(es decir, sin 's'). Cuando los nombres de archivos y carpetas tengan espacios, utilice comillas.
set file="%CD%\folder.jpg"
if exist %file% goto FOLDER
o...
set file=%CD%\folder.jpg
if exist "%file%" goto FOLDER
Además, ¿realmente querías el set
comando simple en la tercera línea de código? Parece un poco solitario por sí solo.
Finalmente, si lo tiene @echo off
al inicio del script, no es necesario que coloque el @
símbolo al inicio de cada echo
comando.