¿Como crear un archivo.bat que muestre en un "Cuadro de mensaje MsgBox" el numero de .mp3 que hay en una carpeta específica ?

Ante todo decir que soy nuevo en este foro, y espero respetar las normas de formulación de preguntas y demás, y dar mi sincera gratitud.

Tengo este código que crea carpetas con el nombre de los mp3 de una carpeta, y mueve cada mp3 a su carpeta correspondiente:

 for %%a in (*.mp3*) do (
Md "%%~na" 2>nul
move "%%a" "%%~na"
)

Lo que quiero conseguir es que se muestre en un "Cuadro de mensaje MsgBox" el numero de archivos mp3 que ha encontrado en una carpeta. Dejo como ejemplo una imagen de lo que busco:

Les doy muchas gracias por adelantado.

1 respuesta

Respuesta
1

Tengo una idea para hacer algo parecido a lo que pides, pero necesito algún tiempo para probarla. A ver si mañana te puedo decir algo. Se basa en lanzar otro BAT con START que saque una ventanita con el contenido que se le pase. Para obtener el número de archivos MP3 de una carpeta usaría esto:

dir /b *.mp3|find /v /c ""

¡Gracias!  de todo corazón.

Ya he podido dedicarle un ratillo.

Esto es lo que te propongo, al menos como punto de partida:

@echo off
set carpmp3=d:\carpeta prueba\origen
set carpbat=d:\bat
pushd %carpmp3%
for /f %%x in ('dir /b *.mp3*^|find /v /c ""') do set numarch=%%x
start "" /wait "%carpbat%\MsgBox" %numarch%
for %%a in (*.mp3*) do (
   Md "%%~na" 2>nul
 move "%%a" "%%~na"
   )
Popd

Este sería el bat a ejecutar. Puede estar en cualquier carpeta. En la variable CARPMP3 pones la carpeta de trabajo, en la que vas a buscar los MP3 y en la que vas a crear una nueva subcarpeta por cada MP3 encontrado, moviendo a la nueva carpeta el archivo MP3 correspondiente.

Además tienes que crear un MsgBox.bat con el siguiente contenido:

@echo off
title=Copiando Archivos MP3
set nlin=4
set ncol=40
mode con cols=%ncol% lines=%nlin%
Echo SE VAN A COPIAR %1 ARCHIVOS
Pause
exit

Este bat debería estar en la carpeta indicada en la variable CARPBAT del primer bat. Lo razonable sería que también el primer bat estuviera allí pero eso no es imprescindible.

Prueba a ver si se parece a lo que necesitas. Por supuesto se pueden hacer retoques

Maestro gggirald muchas gracias por responder.
Estoy teniendo problemas con el comando que me has enviado a la hora de adaptarlo a mi pc.

Quizás la mejor forma de explicarlo sea con imágenes, por eso te envió 2:

Hay un pequeño "error de concepto". La variable CARPBAT es la carpeta en la que está el BAT MsgBox.bat es decir, en este caso, Q:\MP3_CARPETA, no el path de ese archivo.

Creo que eso será todo.

Gracias, ya lo he cambiado, y creo que esta es ha lo que te refieres:

set carpmp3=Q:\MP3_CARPETA
set carpbat=Q:\MP3_CARPETA

después de este cambio me salta esta ventana:

Parece que puede acceder al Msgbox, pero hay se queda.

Si que es raro. Para depurarlo primero abre una ventana cmd/Símbolo del Sistema, sitúate en ella y teclea:

Q:
Echo probando
cd mp3_carpeta
echo probando en carpeta
MsgBox 5

Si esto no da problemas será todavía más raro. Si solo da problemas el último comando (MsgBox 5) cambia el MsgBox.bat por este otro:

@echo off
title=Copiando Archivos MP3
set nlin=4
set ncol=40
echo Antes del MODE
mode con cols=%ncol% lines=%nlin%
Echo se van a copiar %1 archivos
Pause
exit

y vuelve a ejecutar (desde Q:\MP3_CARPETA) el último comando (MsgBox 5). Y cuéntame que pasa.

Al ejecutar directamente este comando en CMD me sale esto:

y al cambiar al (MsgBox 5) sigue igual da como resultado lo siguiente:

Si resulta un quebradero de cabeza para ti lo podríamos dejar, no me va la vida en ello, no es más que la curiosidad de un jubilado.

De todas maneras tienes mi más sincero agradecimiento

No te preocupes, yo también estoy jubilado. Y me gustan los quebraderos de cabeza. Me parece que tal vez no me expliqué claramente al hablar de lo que debías teclear. Quería que teclearas de uno en uno los comandos de la primera ventana, a ver si en algún caso salía el mensaje de error "El sistema no puede escribir..." y me contaras que ocurre con cada uno de ello.

Pero deduzco que, sin modificar el MsgBox.bat, sale la ventana correcta, la de fondo verde (¿por qué en fondo verde, por cierto?). Lo sorprendente es que ese bat solo "escribe" en la ventana de comando (comando ECHO) y lo único que hace, aparte de eso, es un comando MODE CON. Podría ser que fuera el MODE CON, pero entonces, en el MsgBox.bat modificado debería salir el mensaje "Antes del MODE" antes del mensaje de error.

Prueba, también, a ejecutar en la ventana CMD el comando

mode con cols=40 lines=4

A ver que te dice.

Gracias GGGIRALD :

He echo una captura de pantalla de los 5 comandos como sugeriste, en el segundo se detecta el error, no obstante te envío las cinco:

El 5 comando: mode con cols=40 lines=4

Actúa como si fuese un (cls) al introducir el comando y presionar Enter se borra el comando tal como lo ves en la imagen:

Y en cuanto la ventana verde no es más que estética, que en su día la cambie, porque la clásica negra me deprimía.

Lo del error de la segunda captura no tiene nada que ver.

Se produce porque he operado desde la misma carpeta MP3_CARPETA, si introduzco el código desde Q:\ no da error y me lleva a MP3_CARPETA

Maestro GGGIRALD, creo que el problema no erradica en ninguno de los 2 comandos, más bien pienso que es algún problema propio de mi ordenador, puede ser que falten archivos EXE, DLL o algún DLL corrupto, SYS, cambios incorrectos en el registro o incluso algún virus. Por tanto he decidido solucionarlo de raíz actualizando a Windows 10 desde cero (ya es hora).

Si te parece bien cuando tenga todo listo y solventado, lo vuelvo a probar y te comento.

Hasta entonces un fuerte abrazo y mil gracias por todo.

PD: Windows 11 que espere un poco.

Si tienes alguna sospecha de ese calibre supongo que está bien que intentes quitártela de la cabeza. Lo cierto es que no sabía por dónde coger este problema porque el BAT del MsgBox no intenta escribir en ningún dispositivo. Y, desde luego, en mi "entorno de pruebas" no consigo reproducir ese problema. Estaba pensando en adelgazar aún más ese bat, quitándole todo para quedarme solo con el START de la llamada, ya sin paso de parámetros. Si aún así se daba el problema quedaría claro que no depende de lo que haga el BAT sino solo del proceso de lanzar un BAT desde otro. Me parece muy bien tu plan. Como la página no siempre me informa de las nuevas entradas en los hilos que sigo, tendré que visitar este de vez en cuando para leer lo que pongas.

Hasta pronto.

Hola Maestro ya estoy de vuelta. Como soy una persona que no lleva demasiado bien acumular dudas, decidí cambiar de estrategia. Antes de cambiar a Windows 10 quería conservar una copia de mi Windows 7 actual en condiciones optimas, pero tenia que quitarme el "run-run” de la cabeza de cual seria el responsable del error "El sistema no puede escribir en el dispositivo especificado."

Me puse a trabajar en ello y di con el fallo. Comparando una copia original del registro que tenia guardada, con el registro actual, encontré 2 claves que entre ellas entraban en conflicto y provocaban el mencionado error. 

Solventada esta traba comprobé que tus códigos no eran parte del problema, ya que ahora funcionan perfectamente. Me he tomado la libertad de introducir unos mínimos cambios, para adaptarlo a mi gusto, también he creado un (.vbs) cuya función no es mas que llamar a (MP3_A_CARPETA.bat) para así evitar que la primera pantalla sea visible:

y por ultimo e creado una clave en el "Editor del Registro" para poder ejecutar el comando desde cualquier ubicación:

Me queda averiguar la forma de como el primer comando "MP3_A_CARPETA.bat" podría mandar la información del numero de mp3s a un ."MP3_A_CARPETA.vbs" en vez de a un "MP3_A_CARPETA.bat" 

Pero de momento con lo logrado me doy mas que satisfecho y no me queda mas que agradecerte inmensamente la gran ayuda que me has aportado, y al foro "Todo expertos" por estar al pie del cañón.

Mil gracias Maestro GGGIRALD.  

Me alegro mucho de que se haya aclarado el asunto y de que los BAT fueran inocentes. En cuanto a VB no puedo aportar mucho, seguro que tú lo dominas más.

Ha sido un placer.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas