¿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
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 ""
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.
- Compartir respuesta