Duda en Batch

Iniciado por maxx93, 19 Julio 2010, 23:46 PM

0 Miembros y 2 Visitantes están viendo este tema.

maxx93

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...

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.

Fluflu

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?
La puerta más segura es la que no necesita ser cerrada...

maxx93

#2
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?

BlacKGilgamesH

Puedes hacerlo asi:

@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

maxx93

#4
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?

BlacKGilgamesH

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:

call:nom %car%

quedaria:

call:nom "%car%"

y eso deberia de solucionarlo.

Saludos

maxx93

#6
Empeoro  :laugh:, en vez de devolver el nombre de la carpeta devuelve "Documents" de "Documents and Settings". Salu2

BlacKGilgamesH

¿como quedo tu code?

maxx93

que code el de para devolver el nombre de la carpeta?

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