Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: maxx93 en 19 Julio 2010, 23:46 pm



Título: Duda en Batch
Publicado por: maxx93 en 19 Julio 2010, 23:46 pm
Hola amigos, tengo una duda, quiero que cuando el usuario escriba una ruta de una carpeta, el script me devuelva el nombre de la carpeta, no se como hacerlo con poco code. Lo unico que se me ocurre es hacer esto...
Código:
echo Ingrese ruta de la carpeta
set /p ruta=
cd "%ruta%"
cd..
set ubic=%cd%
cd\
set carpeta=%temp%\%random%%random%%random%
md "%carpeta%"
move "%ruta%" "%carpeta%"
set nom=%random%%random%%random%
dir "%carpeta%" /b>"%temp%\%nom%.txt"
for /f "delims=" %%i in ("%temp%\%nom%.txt") do (set carpet=%%i)
echo Nombre de la carpeta: %carpet%
move "%carpeta%\%carpet%" "%ubic%"
rd "%carpeta%"
del "%temp%\%nom%.txt"
pause>nul

Pero me parece mucho codigo para lo que necesito... ademas si adentro de la carpeta hay algun archivo en uso, es script se volveria inutil. Algun consejo de como se puede hacer esto con poco code?
Desde ya, gracias por leer.


Título: Re: Duda en Batch
Publicado por: Fluflu en 20 Julio 2010, 01:55 am
Si he entendido bien (corrígeme si no es así) no veo de mucha utilidad que te muestre el nombre de la carpeta porque para escribir la ruta debes conocer ese nombre.

Ejemplo:

C:/Users/Usuario/Documents/Articulos

¿No?


Título: Re: Duda en Batch
Publicado por: maxx93 en 20 Julio 2010, 02:02 am
Sisi, pero estoy armando un script para ocultar archivos y carpeta en donde codifica los nombres de los archivos y carpetas para no ser encontrado igual tiene otros metodos de seguridad, entonces cuando el usuario arrastra el archivo o carpeta al programa y le da enter se oculta pero para que no sea mas complicado pensaba en que detecte la carpeta. Sino el usuario la va a tener que volver a escribir. Lo de identificar el archivo ya lo puede hacer con un dir pero para la carpeta no se me ocurre nada corto. Alguna forma de poder hacerlo mas corto?


Título: Re: Duda en Batch
Publicado por: BlacKGilgamesH en 20 Julio 2010, 05:24 am
Puedes hacerlo asi:

Código:
@echo off
echo.Ingrese ruta de carpeta:
set /p car=
call:nom %car%
clear
echo.El nombre es %nom%
pause>nul
exit
:nom
set nom=%~n1
goto:eof

Saludos


Título: Re: Duda en Batch
Publicado por: maxx93 en 20 Julio 2010, 05:45 am
Buen code BlacKGilgamesH  ;). Muchas Gracias. Pero hay un pequeño problema cuando la carpeta tiene de nombre "x .y" solo toma "x" no toma "x .y", el code esta bien salvo por el clear, me parece que es un bug del command  :-\ . Alguna otra alternativa?


Título: Re: Duda en Batch
Publicado por: BlacKGilgamesH en 20 Julio 2010, 21:21 pm
XD, disculpa el clear, es que me confundi con bash  :silbar: XD, solo es cuestion de cambiarlo por  un cls XD.

Y lo de el "x .y" solo entrecomilla la variable %car% cuando llamas a la etiqueta nom, sea la linea:

Código:
call:nom %car%

quedaria:

Código:
call:nom "%car%"

y eso deberia de solucionarlo.

Saludos


Título: Re: Duda en Batch
Publicado por: maxx93 en 21 Julio 2010, 02:26 am
Empeoro  :laugh:, en vez de devolver el nombre de la carpeta devuelve "Documents" de "Documents and Settings". Salu2


Título: Re: Duda en Batch
Publicado por: BlacKGilgamesH en 21 Julio 2010, 02:46 am
¿como quedo tu code?


Título: Re: Duda en Batch
Publicado por: maxx93 en 21 Julio 2010, 03:07 am
que code el de para devolver el nombre de la carpeta?
Código:
echo Ingrese ruta de carpeta:
set /p car=
call:nom "%car%"
echo.
echo El nombre es %not%
pause>nul
exit
:nom
set not=%~n1
goto:eof