Programación Batch, Entrando en un directorio de nombre desconocido...

Iniciado por _Xerks_, 20 Julio 2006, 23:24 PM

0 Miembros y 1 Visitante están viendo este tema.

_Xerks_

Hola a todos me ha surgido una duda haciendo una de mis chapucillas en casa.

Os planteo un poco el escenario, tengo un directorio en el disco duro llamado "datos", concretamente es "C:\datos", dentro de este directorio existe un subdirectorio cuyo nombre desconocemos, y dentro del subdirectorio un "archivo.exe". Lo que busco es generar un Bat que sea capaz de ejecutar a "archivo.exe".

Se que muchos de vosotros pensareis menuda chorrada, pero así es  ;D, es mi chorrada y la quiero llevar a cabo, de hecho ya lo tengo, pero no me sirve :'(


@echo off
cd c:\datos
attrib /s archivo.exe>find.tmp
for /f "tokens=1* delims=datos" %%a in (find.tmp) do set location=%%b
set location=%location:~0,-12%
set location=%location:~1,99999999%
cd %location%
call archivo.exe
exit


Y esto me funciona correctamente, se me ejecuta la aplicación "c:\datos\???\archivo.exe"
pero quiero ver si alguien sabe como conseguirlo con algún otro método, ya q' en concreto lo que me fastidia es tener que usar los caracteres paréntesis "(" ")".

También se me ocurrió para no tener q' recurrir a los peréntesis esta animalada de código:


cd c:\datos
cd 0*
archivo.exe
cd 1*
archivo.exe
cd 2*
archivo.exe
cd 3*
archivo.exe
cd 4*
archivo.exe
cd 5*
archivo.exe
cd 6*
archivo.exe
cd 7*
archivo.exe
cd 8*
archivo.exe
cd 9*
archivo.exe
cd a*
archivo.exe
cd b*
archivo.exe
cd c*
archivo.exe
cd d*
archivo.exe
cd e*
archivo.exe
cd f*
archivo.exe
cd g*
archivo.exe
cd h*
archivo.exe
cd i*
archivo.exe
cd j*
archivo.exe
cd k*
archivo.exe
cd l*
archivo.exe
cd m*
archivo.exe
cd n*
archivo.exe
cd ñ*
archivo.exe
cd o*
archivo.exe
cd p*
archivo.exe
cd q*
archivo.exe
cd r*
archivo.exe
cd s*
archivo.exe
cd t*
archivo.exe
cd u*
archivo.exe
cd v*
archivo.exe
cd w*
archivo.exe
cd x*
archivo.exe
cd y*
archivo.exe
cd z*
archivo.exe
exit


Jejjee, a que es una auténtica brutalidad  ::) bueno eso lo sé, pero hasta no me importaba si hubiese funcionado, y de hecho funcionó, hasta que el sistema en cuestión de segundos se vuelve inestable, y te ves obligado a cerrar la sesión de windows y volver a entrar. No entiendo porque se vuelve tan inestable, el "archivo.exe" se ejecuta, pero todo lo demás se escoñeta.

Espero ayudita please.  :P

Un saludo amigos.

sch3m4

y si hay dos o más directorios que empiezan por la misma letra?  :-\
Si solo existe ese "archivo.exe" en toda la rama de directorios, podrías hacer un "dir /s /b archivo.exe" dentro de C:\datos y mirar si te ha devuelto alguna ruta y ejecutarla.
SafetyBits

"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.(..

_Xerks_

Hola Lympex, antes de nada, gracias por contestar, verás, sabemos que sólo existe un subdirectorio dentro del directorio "datos", pero no sabemos como se llama ese subdirectorio, por otra parte, si sabemos que ese subdirectorio contiene un ejecutable llamado "archivo.exe", nosé si me he explicado bien.

Ocea esto es lo que sabemos que existe "c:\datos\???\archivo.exe"
??? = al subdirectorio de nombre desconocido.

Otra cosa, quiero crear un bat que lo haga todo automático, lo digo por lo de
Citarpodrías hacer un "dir /s /b c:\datos archivo.exe" y mirar si te ha devuelto alguna ruta y ejecutarla.
no quiero una vez ejecutado el bat tener yo que interactuar de nuevo para conseguir el resultado final.

Un saludo.

sch3m4

aja, entonces no sé, solo era por dar una idea, no programo en batch, sorry
SafetyBits

"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.(..

_Xerks_

Gracias, eso es precisamente lo que estoy buscando, ideas... ideas nuevas, porque yo hace días que me quedé sin ellas...  ;D

Seguro que se puede conseguir...  :rolleyes:

_Xerks_

Verás lo de los paréntesis no es un capricho, el código al final lo voy a meter dentro de un Visual Basic Script, en concreto dentro del comando "archivoBat.WriteLine(codigo batch)" y claro, el codigo Batch no puede contener paréntesis, de lo contrario VBS interpreta que se cierra la linea que estoy escribiendo, y se me fastidia el invento...   :P

A ver si damos con alguna alternativa.   :huh:

_Xerks_

 ;D por fín tengo la solución, gracias al amigo "iobh"

ha dado con una solución simple pero eficiente, le debo una  ;)


@echo off
cd c:\datos
cd 0*
cd 1*
cd 2*
cd 3*
cd 4*
cd 5*
cd 6*
cd 7*
cd 8*
cd 9*
cd a*
cd b*
cd c*
cd d*
cd e*
cd f*
cd g*
cd h*
cd i*
cd j*
cd k*
cd l*
cd m*
cd n*
cd ñ*
cd o*
cd p*
cd q*
cd r*
cd s*
cd t*
cd u*
cd v*
cd w*
cd x*
cd y*
cd z*
cls
call archivo.exe
pause
exit


lo expongo por si a alguien le pudiera resultar útil su uso.

Un salu2.

silverhack

Si sabes el nombre del archivo (archivo.exe) puedes utilizar perfectamente el comando nativo dir para hacer la búsqueda, que la guarde en un fichero, y luego si quieres con el token vas buscando la ruta, todo ello de forma automatizada...
Ejemplo...
Si quisiésemos buscar el ejecutable iexplore.exe de la ruta archivos de programas, ejecutaremos lo siguiente:

dir c:\archiv~1\iexplore.exe /S

Me huele a algún tipo de malware lo que estás intentando hacer.... ;)
No admitir corrección ni consejo sobre la propia obra es pedantería.

Jean de la Bruyere

sch3m4

eso le dije yo silverhack, y dijo que no, o quizás no lo entendí
SafetyBits

"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.(..