Ms-Dos - Ejecutar aleatoriamente un archivo de una carpeta específica.

 
Vista:

Ejecutar aleatoriamente un archivo de una carpeta específica.

Publicado por JuanFra (2 intervenciones) el 15/02/2013 20:02:59
Hola!!! Esta es la primera vez posteando en este foro! Bueno, esta es mi dudita... existe algún programa que, al especificarle una carpeta/directorio, ejecute un archivo al azar???
de no ser así, existe algún código, .bat, etc... que al ejecutarse, abra un archivo al azar del directorio en donde se encuentra???

Leí en este foro alguien que preguntó algo similar, [ http://www.lawebdelprogramador.com/foros/Ms-Dos/1119192-Ejecutar_un_archivo_aleatoriamente....html ] pero orientado para ejecutarl urls de los Favoritos, y no me sirvió eso, pero supuse que me prodrian ayudar en mi caso especifico aquí.

Como ocurrió con ese tal "Alejo"... seguro tomen mi consulta como una "aberración"/"anormalidad" jajaja me lo veo venir, pero al igual que el, me motivo por la curiosidad primeramente... y segundo, es porque (pongo un ejemplo) tengo una lista grande de juegos instalados en la PC... y a la hora de jugar, a veces no se cual decidir, entonces se me ocurrio lo que les plantee mas arriba... un programa o un .bat que ejecute al azar archivos colocados en una carpeta. así como para los juegos, se podría aplicar para varias cosas mas!

desde ya muchisimas gracas!!

JuanFra

PD: posteo esto en varios foros, porqué realmente no se cual sería el mas adecuado, disculpenme!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de A.H.H

Ejecutar aleatoriamente un archivo de una carpeta específica.

Publicado por A.H.H (216 intervenciones) el 17/02/2013 00:31:20
Hola se podria hacer asi:
se trata de enumerar todas las rutas de un directorio en un archivo de texto y como las lineas quedan enumeradas, con %random% escogemos un numero al azar de todas esas lineas del archivo de texto y la ejecutamos.
Copia y pega este codigo dentro de un archivo.bat, el ejemplo lo he hecho en windows xp y en el simbolo del sistema.

IMPORTANTE:ejecutar el archivo.bat dentro del directorio o carpeta que se desea actuar.
-------------------------------------------------------------------------------------------------------------------------

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
@echo off
for /R %%x in (*) do (SET LINEA=%%x&CALL:ENUMERAR)
cls
echo.
echo.
echo USTED TIENE EN ESTE DIRECTORIO %contador% RUTAS PARA ELEGIR AL AZAR.
Set /a Number=(%Random% %%contador)+1
echo.
echo EL ORDENADOR HA ELEGIDO AL AZAR LA NUMERO: %Number% QUE CORRESPONDE A:
ECHO.
FOR /F "tokens=2*" %%L in ('findSTR /b "^%Number%\>" "rutasenumeradas.txt"') do SET ruta="%%L %%M"
echo %ruta%
ECHO.
ECHO.
echo.
ECHO presione una tecla para ejecutar la ruta...
if %ruta% EQU %0 EXIT
pause>nul
start "" %ruta%
ERASE /Q "rutasenumeradas.txt"
EXIT
 
:ENUMERAR
CLS
ECHO Espere...Recopilando informacion del directorio...
set /a contador+ = 1
ECHO %contador% %LINEA%>>"rutasenumeradas.txt"
GOTO:EOF
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Ejecutar aleatoriamente un archivo de una carpeta específica.

Publicado por JuanFra (2 intervenciones) el 17/02/2013 00:38:00
GRACIAAAAASS!!!! MUCHISIMAS GRACIAS!!!!
Sos un genio! Funciona de Maravilla!!
Muchas gracias por atender este insignificante capricho de este humilde aprendiz =) jaja un saludo!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Ejecutar aleatoriamente un archivo de una carpeta específica.

Publicado por Ariel (5 intervenciones) el 23/04/2013 21:55:15
Hola A.H.H.!!! impresionante la utilidad que le dan a DOS, en verdad uno como usuario final (Ventanitas) se pierde mucho de lo que pasa en la trastienda.....
Quería felicitarte y hacerte una consulta al respecto.
Es posible leer a traves de DOS el mismo txt generado ("rutasenumeradas.txt")
y copiar linea por linea cada archivo encontrado en un nuevo directorio???.
Saludos y nuevamente felicitaciones
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de A.H.H

Ejecutar aleatoriamente un archivo de una carpeta específica.

Publicado por A.H.H (216 intervenciones) el 26/04/2013 20:40:59
Hola Ariel, me alegro que te guste.

En el codigo anterior se puede incluir alguna linea y alguna variable para que vaya recogiendo el nombre de archivo, para que a la vez que va escribiendo en el archivo de texto rutasenumeradas tambien los vaya copiando por ejemplo en el disco local %systemdrive% en una carpeta por ejemplo Archivos y dentro de esta el archivo que meteremos en la variable%archiv%


La primeta linea del For del codigo que expuse arriba quedaria asi modificada para recoger la ruta entera en %LINEA% y solo el nombre de archivo en %archiv%

1
for /R %%x in (*) do (SET LINEA=%%x&set archiv=%%~nxx&CALL:ENUMERAR)



Y en la etiqueta enumerar quedaria asi modificada:

1
2
3
4
5
6
7
8
9
10
:ENUMERAR
CLS
ECHO Espere...Recopilando informacion del directorio...
set /a contador+ = 1
ECHO "%LINEA%"
ECHO %contador% %LINEA%>>"rutasenumeradas.txt"
if not exist "%systemdrive%\Archivos" mkdir "%systemdrive%\Archivos"
copy "%LINEA%" "%systemdrive%\Archivos\%archiv%"
 
GOTO:EOF


Otra cosa es que lo que quieras es no usar el codigo de arriba y leer un archivo de texto linea por linea, si es asi dimelo y te escribo un ejemplo.

Nota: en los codigos anteriores tambien se incorporan en las rutas el archivo .bat y el archivo de texto que se crea rutasenumeradas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Ejecutar aleatoriamente un archivo de una carpeta específica.

Publicado por Ariel (5 intervenciones) el 28/04/2013 17:09:10
Genial este ejemplo. En realidad me es muy util el codigo que escibiste, dado que necesito tener una lista completa de todo lo que tengo en un directorio, junto con sus subdirectorios. Ahora, para proceder a copiar en una carpeta separada todos los archivos que quiero, necesitaria refinar la seleccion a una lista especifica, con lo cual no se si se puede hacer el filtro en el mismo proceso o leer un archivo que contenga las rutas y nombre de archivos que yo quisiera copiar. En todo caso y para no alargar el tema, muestrame como hacer que el proceso BAT lea un archivo txt linea por linea y me pondre a jugar para hacer un mix de tus dos excelentes procesos. Nuevamente gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de A.H.H.

Ejecutar aleatoriamente un archivo de una carpeta específica.

Publicado por A.H.H. (216 intervenciones) el 28/04/2013 20:42:04
Hola prueba esto:

1
2
3
4
5
6
7
8
9
@echo off
TITLE BUSCADOR DE ARCHIVOS Y COPIA
SET /P NOMARCHIV=Introduce archivo a buscar ejem. Notepad.exe:
set /p RUTA=Introduce direccion ejem. C:\ donde empezar a buscar:
IF NOT EXIST "%SYSTEMDRIVE%\COPIA" MKDIR "%SYSTEMDRIVE%\COPIA"
for /R %RUTA% %%A in (%NOMARCHIV%) DO IF EXIST %%A ECHO %%A>>RUTAS.txt&COPY "%%A" "%SYSTEMDRIVE%\COPIA\%%~nxA"
 
pause
EXIT



En introduce archivo puedes introducir de las siguientes maneras:

nombrearchivo.extension--EJEMPLO--->Notepad.exe
nombrearchivo.extension(1espacio)nombrearchivo.extension--ejem-->Notepad.exe explorer.exe
*.extension---------------------EJEMPLO---> *.mp3
*.extension(1espacio)*.extension ---- EJEMPLO----> *.mp3 *.jpg(siempre separadas por 1 espacio)


En introduce direccion:
puedes introducir cual quier letra de disco O Ruta ejem, C:\


El codigo verifica si esta creada una carpeta llamada COPIA en el disco local y si no es asi la crea.
Despues mete en esa capeta una copia de los archivos encontrados que has elegido buscar.
y tambien saca un archivo de texto llamado RUTAS.txt donde queda el listado de los archivos, ESTE archivo se crea en el mismo sitio donde ejecutas el .bat,

IMPORTANTE: si lo quieres ejecutar varias veces deberias verificar primero si existe el archivo de texto rutas.txt para eliminarlo puesto que la segunda vez se siguen adosando las lineas. .
Podrias hacer otra linea para introducir donde quieres guardar la copia.

la variable %systemdrive% es para saber cual es la letra del disco local.

si escribes SET en simbolo del sistema veras las variables del sistema.

espero te sirva, salu2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Ejecutar aleatoriamente un archivo de una carpeta específica.

Publicado por Ariel (5 intervenciones) el 06/06/2013 18:05:39
Excelente el aporte.... te agradezco nuevamente.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Ejecutar aleatoriamente un archivo de una carpeta específica.

Publicado por Ariel (5 intervenciones) el 23/07/2013 19:07:06
Hola nuevamente, y a la carga con el mismo tema.
Junté dos partes de los codigos que me fuiste explicando, y de la mejor manera que pude.
La idea es que al especificarle un archivo (Ej: *.jpg) en un disco C:\ busque todos los archivos en todos los subfolders y los copie en un unico lugar (ej: "%SYSTEMDRIVE%\Combo_Temp) y les ponga el numero de contador adelante, de manera que no sobre escriba ningun archivo. El problema que tengo es que el contador se resetea al salir de cada carpeta y vuelve a inicar, todos los archivos se llaman "1 P10000.jpg", y en los archivos "rutasenumeradas.txt" tambien salen con el mismo numero adelante.

Va el codigo y mi agradecimiento


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
TITLE BUSCADOR DE ARCHIVOS Y COPIA
SET /P NOMARCHIV=Introduce archivo a buscar ejem. Notepad.exe:
set /p RUTA=Introduce direccion ejem. C:\ donde empezar a buscar:
sET /a LINEA=(%contador)+1
IF NOT EXIST "%SYSTEMDRIVE%\Combo_Temp" MKDIR "%SYSTEMDRIVE%\Combo_Temp"
 
for /R %%x in (%NOMARCHIV%) do (SET LINEA=%%x&set archiv=%%~nxx&CALL:ENUMERAR)
for /R %RUTA% %%A in (%NOMARCHIV%) DO IF EXIST %%A ECHO %%A>>RUTAS.txt&COPY "%%A" "%SYSTEMDRIVE%\Combo_Temp\%LINEA% %%~nxA"
 
echo presione una tecla para ejecutar la ruta...
if %ruta% EQU %0 EXIT pause>nul start "" %ruta% ERASE /Q "rutasenumeradas.txt" EXIT
 
:ENUMERAR
CLS
ECHO Espere...Recopilando informacion del directorio...
set /a contador+ = 1
ECHO %contador% %LINEA%>>"rutasenumeradas.txt"
if not exist "%SYSTEMDRIVE%\Combo_Temp" mkdir "%SYSTEMDRIVE%\Combo_Temp"
copy "%LINEA%" "%SYSTEMDRIVE%\Combo_Temp\%contador% %archiv%"
GOTO:EOF
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de A.H.H.

Ejecutar aleatoriamente un archivo de una carpeta específica.

Publicado por A.H.H. (216 intervenciones) el 25/07/2013 23:46:35
Hola de nuevo Ariel:

He simplificado un poco el código haciendo algo de limpieza y espero que te sirva asi
Copia y pega en un archivo.bat el código tal como lo pongo y pruébalo...
Lo que hace ahora es que enumera en un archivo las rutas halladas y al mismo tiempo también las va copiando a combo_temp y al final presionas una tecla para que te abra la carpeta combo_temp


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
@echo off
TITLE BUSCADOR DE ARCHIVOS Y COPIA
SET /P NOMARCHIV=Introduce archivo a buscar ejem. Notepad.exe:
set /p RUTA=Introduce direccion ejem. C:\ donde empezar a buscar:
SET /A contador=1
 
IF NOT EXIST "%SYSTEMDRIVE%\Combo_Temp" MKDIR "%SYSTEMDRIVE%\Combo_Temp"
 
for /R %RUTA% %%A in (%NOMARCHIV%) DO (IF EXIST %%A set LINEA=%%A
set archivo=%%~nxA&CALL :ENUMERAR)
 
CLS
ECHO SE HA TERMINADO LA COPIA DE ARCHIVOS....
ECHO PRESIONE UNA TECLA PARA ABRIR "%SYSTEMDRIVE%\Combo_Temp"
PAUSE>NUL
START "" "%SYSTEMDRIVE%\Combo_Temp"
EXIT
 
:ENUMERAR
CLS
ECHO RECOPILANDO INFORMACION Y COPIANDO ARCHIVOS EN %SYSTEMDRIVE%\Combo_Temp %contador%
ECHO %contador% %LINEA%>>RUTASENUMERADAS.TXT
COPY "%LINEA%" "%SYSTEMDRIVE%\Combo_Temp\%contador% %archivo%"
set /a contador+ = 1
GOTO:EOF


salu2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de A.H.H.

Ejecutar aleatoriamente un archivo de una carpeta específica.

Publicado por A.H.H. (216 intervenciones) el 26/07/2013 00:11:45
Se me olvido poner antes de la línea donde pone EXIT

1
ERASE /Q "RUTASENUMERADAS.TXT"



PARA QUE BORRE EL ARCHIVO DE RUTASENUMERADAS AL FINAL
YA QUE SI LO EJECUTAS DE NUEVO EL BAT SE AÑADIRAN LINEAS A LAS YA EXISTENTES.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Ejecutar aleatoriamente un archivo de una carpeta específica.

Publicado por Ariel (5 intervenciones) el 26/07/2013 18:21:42
Infalible.... muchas gracias por tu aporte, que como siempre da justo en la tecla!!!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de A.H.H

Ejecutar aleatoriamente un archivo de una carpeta específica.

Publicado por A.H.H (216 intervenciones) el 27/07/2013 01:10:01
Hola Ariel

estoy revisando el código cuando tengo tiempo y podría haber algunos errores que se podrían tratar

me explico:

Imagina que en la pregunta de introduce archivo a buscar: el usuario no introduce nada ..daría error
Imagina que en la pregunta de introduce archivo a buscar:"el usuario pone comillas"..daría error
Imagina que en la pregunta de introduce archivo a buscar:el usuario pone el nombre de archivo con espacios en blanco...daría error

o arrastras un archivo dentro de la ventana cmd abierta en la pregunta,y la variable coge la ruta del archivo....daría error

lo mismo en la otra pregunta del directorio.........o errores parecidos

bueno todo eso tiene solucionnn


algunos errores como si el usuario no introduce nada y le da a enter en la pregunta se arregla asi

........
.........
........

:NOMBREARCHIVO
cls
SET /P NOMARCHIV=Introduce archivo a buscar ejem. Notepad.exe:
IF NOT DEFINED NOMARCHIV (GOTO :NOMBREARCHIVO)
.........
.........

Otro caso si pones a buscar por ejemplo un archivo con espacios en el nombre
por ejemplo....> vacaciones en Mallorca.jpg

se podría arreglar asi para que no diera errores

SET NOMARCHIV=%NOMARCHIV: =?%

que lo que hace es suprimir los espacios en blanco por un símbolo de cierre de interrogación que como sabemos lo que hace ese símbolo es comodin para un carácter entonces no daría error

y el contenido de la variable quedaría asi..> vacaciones?en?Mallorca.jpg

buscando el archivo sin error

TODO ESTO TE LO VOY A ARREGLAR Y DENTRO DE POCO TE PONGO EL CODIGO COMPLETO OK? TRANQUILO LO HAGO POR HOBBY

POR CIERTO EN EL ULTIMO CODIGO QUE PROBASTE FALTA QUE PONGAS ENTRE COMILLAS LA VARIABLE RUTA DEL FOR

for /R "%RUTA%" %%A .........

YA QUE ASI PODRAS BUSCAR POR NOMBRE DE ARCHIVO.EXTENSION
me refiero que podras poner a buscar por ejemplo Notepad.exe
si no te daría otro error...

bueno lo dicho ya te enviare el código modificado

salu2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ejecutar aleatoriamente un archivo de una carpeta específica.

Publicado por Iss (1 intervención) el 11/02/2015 04:41:47
Gracias por el dato! Exactamente lo que estaba buscando :) Esto es lo que la lectura electrónica nos hace hoy en día ^3^
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ejecutar aleatoriamente un archivo de una carpeta específica.

Publicado por jeremias (1 intervención) el 08/06/2015 02:55:44
Hola queria pedir una ayuda necesito hacer un .bat que ejecute una imagen diferente en pantalla completa cada 30 min y que la misma quede en pantalla unos 30 segundos y luego se cierre. Es posible, me podrian ayudar.

Muchas gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ejecutar aleatoriamente un archivo de una carpeta específica.

Publicado por maury (1 intervención) el 01/10/2015 22:45:29
por ser la mejor respuesta y estar mas serca de lo que quiero saber, despues de leer casi 1 mes entero miles de foros, quisiera preguntarles

como hacer un bat o ejecutable q elimine el menú contextual de un (1) icono o carpeta en particular, no de todo el sistema como explican en todos lados, solo de un .exe o de un acceso directo del sistema de windows, es decir q al apretar el botón derecho del mouse sobre el icono-carpeta elegido no funcione, de esta forma tendrán un acceso limitado ya q solo funcionaria el botón izquierdo y serviría solo para ejecutarlo, bueno como dije acceso limitado no restringido ya q con el teclado podremos hacer casi todas las funciones q pretendemos ocultar, pero son pocos los usan los atajos del teclado :-)
tambien quisiera desabilitar la funcion [Alt + Enter] del teclado ya q les aparecera las propiedades de la carpeta o del acc directo y de nada serviria la eliminacion del menu contextual anterior. saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar