Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: supertxull en 15 Febrero 2017, 13:54 pm



Título: Comprobar directorios. Problema con espacios (de nuevo)
Publicado por: supertxull en 15 Febrero 2017, 13:54 pm
Buenas a tod@s. He acabado aquí tras buscar una y otra vez sin resultado...
El caso es que quiero generar un directorio siempre y cuando no exista. ¿Cual es el problema? Como podréis imaginar, si el directorio contiene espacios, no funciona mi script.

Código:
set "proy="
cls
SET /P proy=Introduce el nombre del directorio:
echo %proy%
if "%proy%" EQU "" goto menu1
if "%proy%" EQU " " goto menu1
IF NOT EXIST %proy%\NUL (echo OK, no existe) else (echo NO, ya existe)
ping -n 5 0.0.0.0 > nul
goto menu1

¿Puede alguien echarme un cable con el asunto? Gracias de antemano.


Título: Re: Comprobar directorios. Problema con espacios (de nuevo)
Publicado por: Eleкtro en 15 Febrero 2017, 16:25 pm
si el directorio contiene espacios, no funciona mi script.

Para evitar errories de sintaxis debes encerrar los argumentos/directorios con espacios entre comillas dobles.

Código
  1. :menu1
  2. set "proy="
  3. cls
  4. SET /P "proy=Introduce el nombre del directorio: "
  5. Echo:"%proy%"
  6. if "%proy%" EQU "" (goto :menu1)
  7. if "%proy%" EQU " " (goto :menu1)
  8. IF NOT EXIST "%proy%\NUL" (
  9.    echo OK, no existe
  10. ) Else (
  11.    echo NO, ya existe
  12. )
  13. ping -n 5 0.0.0.0 > nul
  14. goto :menu1

Hazlo siempre tengan espacios o no, y así evitarás posibles errores.

Saludos!


Título: Re: Comprobar directorios. Problema con espacios (de nuevo)
Publicado por: supertxull en 15 Febrero 2017, 16:37 pm
Para evitar errories de sintaxis debes encerrar los argumentos/directorios con espacios entre comillas dobles.
Hazlo siempre tengan espacios o no, y así evitarás posibles errores.
Saludos!

Muchas gracias por tu ayuda pero, el caso es que no funciona; siempre pasa a Ok, no existe exista o no.
Creo que el problema está en el IF NOT EXIST "%proy%\NUL" pero no sé cómo arreglarlo.


Título: Re: Comprobar directorios. Problema con espacios (de nuevo)
Publicado por: supertxull en 17 Febrero 2017, 10:32 am
RESUELTO!
He optado por probar con otro código y funciona.
Lo dejo por aquí por si es de utilidad para alguien más. Hasta otra y gracias.

Código:
set "proy="
set "folder="
cls
SET /P "proy=Introduce el nombre del directorio: "
For /F "tokens=*" %%a in ('Dir /B /A:D') do (
Set "folder=%%a"
if "%proy%"=="%%a" (goto error)
)


Título: Re: Comprobar directorios. Problema con espacios (de nuevo)
Publicado por: Eleкtro en 22 Febrero 2017, 05:02 am
Hola.

Si te fijas, en el código que mostré, en esta linea:
Código
  1. IF NOT EXIST "%proy%\NUL"

La dejé así, tal y como estaba escrita en el primer código que tu mostraste, por que eso me dió a entender que tu querías buscar un directorio llamado "Nul" (a pesar de que sea un nombre ilegal en Windows) dentro del directorio que especificases en la variable %proy%. Es decir, que si en la variable %proy% especificas "Manolo", el código debía buscar un directorio llamado "Nul" dentro del directorio "Manolo". Con el último código que has mostrado parece que aquello que escribiste de "%proy%\Nul" era simplemente por que estuviste probando cosas aleatorias o no se...

En fin, para corregirlo solo debes modificar esa linea para dejar el código que te mostré así:

Código
  1. :menu1
  2. set "proy="
  3. cls
  4. SET /P "proy=Introduce el nombre del directorio: "
  5. Echo:"%proy%"
  6. if "%proy%" EQU "" (goto :menu1)
  7. if "%proy%" EQU " " (goto :menu1)
  8. IF NOT EXIST "%proy%\" (
  9.    echo OK, no existe
  10. ) Else (
  11.    echo NO, ya existe
  12. )
  13. ping -n 5 0.0.0.0 > nul
  14. goto :menu1

¡Saludos!.


Título: Re: Comprobar directorios. Problema con espacios (de nuevo)
Publicado por: supertxull en 22 Febrero 2017, 10:40 am
Hola.

Si te fijas, en el código que mostré, en esta linea:

La dejé así, tal y como estaba escrita en el primer código que tu mostraste, por que eso me dió a entender que tu querías buscar un directorio llamado "Nul" (a pesar de que sea un nombre ilegal en Windows) dentro del directorio que especificases en la variable %proy%. Es decir, que si en la variable %proy% especificas "Manolo", el código debía buscar un directorio llamado "Nul" dentro del directorio "Manolo". Con el último código que has mostrado parece que aquello que escribiste de "%proy%\Nul" era simplemente por que estuviste probando cosas aleatorias o no se...

En fin, para corregirlo solo debes modificar esa linea para dejar el código que te mostré así:

¡Saludos!.
Vaya, muchas gracias por la aclaración. Imaginé que NUL era la condición de retorno del NOT EXIST  ;D
Estaré más atento la próxima vez.


Título: Re: Comprobar directorios. Problema con espacios (de nuevo)
Publicado por: Eleкtro en 22 Febrero 2017, 11:02 am
Hola de nuevo :P. No quiero ser pesado pero ya que has mencionado ese detalle, en Batch no puedes especificar arbitrariamente True ni False para evaluar condicionales, eso es algo que se evalua en segundo plano de forma abstracta. Si tu propósito era usar NUL con el propósito real que tiene dentro del lenguaje Batch, entonces aquí puedes hallar más info relevante al respecto:

  • http://foro.elhacker.net/scripting/crear_un_bat_para_buscar_archivos-t465109.0.html;msg2109823#msg2109823

Saludos!


Título: Re: Comprobar directorios. Problema con espacios (de nuevo)
Publicado por: supertxull en 22 Febrero 2017, 13:12 pm
Hola de nuevo :P. No quiero ser pesado pero ya que has mencionado ese detalle, en Batch no puedes especificar arbitrariamente True ni False para evaluar condicionales, eso es algo que se evalua en segundo plano de forma abstracta. Si tu propósito era usar NUL con el propósito real que tiene dentro del lenguaje Batch, entonces aquí puedes hallar más info relevante al respecto:

  • http://foro.elhacker.net/scripting/crear_un_bat_para_buscar_archivos-t465109.0.html;msg2109823#msg2109823

Saludos!
¿Pesado? para nada, muchísimas gracias. Me viene de perlas.