Tema destacado: Últimos eventos sobre seguridad/inseguridad
Autor
|
Tema: Script para extraer listado mp3 (Leído 895 veces)
|
ovichan
Desconectado
Mensajes: 14
|
Feliz navidad a todos. Bueno este es mi primer bat ^^, y la verdad es que todo se ejecuta bien excepto que no redirecciona en el caso de errorlevel 2 @echo off color 0A title Listar archivos carpetas
:start set /p ruta=Inserte la ruta de la carpeta: echo. cd %ruta% if errorlevel 1 (echo Inserto una ruta incorrecta, vuelva a introducirla. & cls & goto start)
:accion set /p nombre_archivo=Inserte el nombre de archivo de texto donde guardar el resultado: if exist "%ruta%\%nombre_archivo%.txt" (choice /c sn /m "Desea sobreescribir archivo, Si(s) o no(n): ") else goto escribir if errorlevel 1 goto escribir if errorlevel 2 (cls & goto accion)
:escribir dir /b *.mp3>%nombre_archivo%.txt pause>nul Una ayudita please ^^
|
|
|
|
|
En línea
|
|
|
|
ovichan
Desconectado
Mensajes: 14
|
Solucionado, pensaba que aunque fuese la lectura linea por linea detectaria que errorlevel uno no fue la opcion elegida, pero al parecer no es asi, la lee y la ejecuta... tiene leches ^^ El correcto sería asi @echo off color 0A title Listar archivos carpetas
:start set /p ruta=Inserte la ruta de la carpeta: echo. cd %ruta% if errorlevel 1 (echo Inserto una ruta incorrecta, vuelva a introducirla. & cls & goto start)
:accion set /p nombre_archivo=Inserte el nombre de archivo de texto donde guardar el resultado: if exist "%ruta%\%nombre_archivo%.txt" (choice /c sn /m "Desea sobreescribir archivo, Si(s) o no(n): ") else goto escribir if errorlevel 2 (cls & goto accion) if errorlevel 1 goto escribir
:escribir dir /b *.mp3>%nombre_archivo%.txt pause>nul En otros lenguajes la primera sentencia hubiera no se hubiese ejecutado y hubiera saltado a la siguiente. Es una peculiaridad de este lenguaje???
|
|
|
|
|
En línea
|
|
|
|
ovichan
Desconectado
Mensajes: 14
|
Suponiendo que quisiera preguntar al user, el formato de la musica a listar... como podria concantenar los string de manera que al final la linea de ejecucion vaya ampliando formatos. Me explico:
Si tengo la linea que ejecuta el listado, para mp3:
dir /b *.mp3>%nombre_archivo%.txt
Y al preguntar al user, decide tambien listar los flac de la carpeta. Como puedo concatenar de manera que quedase asi:
dir /b *.flac & dir /b *.mp3>%nombre_archivo%.txt
Con algun tipo de bucle quizas??
|
|
|
|
|
En línea
|
|
|
|
|
EleKtro H@cker
|
Como puedo concatenar de manera que quedase asi: dir /b *.flac & dir /b *.mp3>%nombre_archivo%.txt También podría ser así xD: dir /b "*.flac"; "*.mp3" > "%nombre_archivo%.txt"
¿Lo que buscas es algo así? @echo off
REM MP3 Call :Listar MP3
REM FLAC choice /M "Desea listar los flac tambien?" If %ErrorLevel% Equ 1 (Call :Listar FLAC)
REM M4A choice /M "Desea listar los M4A tambien?" If %ErrorLevel% Equ 1 (Call :Listar M4A) Pause >NUL :Listar dir /b "*.%1">>"%nombre_archivo%.txt" Goto :EOF Un saludo. EDITO: En tu script, recuerda usar comillas dobles aquí para evitar futuros errores: cd "%ruta%" y dir /b "*.mp3">"%nombre_archivo%.txt"
|
|
|
|
« Última modificación: 23 Diciembre 2011, 10:36 por EleKtro H@cker »
|
En línea
|
Siempre habrá alguien más ignorante que uno mismo, Como por ejemplo el nuevo presidente de la SGAE: "La banda ancha es totalmente innecesaria para navegar convencionalmente, Solo sirve para descargar megas y megas grandisimos, Y tal." PD: Volviendo a la era de los 56 k.
|
|
|
ovichan
Desconectado
Mensajes: 14
|
Muchas gracias EleKtro H@cker, es peliculiar este idioma... intente usar operadores logicos, dir /b *.flac || *.mp3; pero claro no rulaba ^^. Lo del call es muy interesante pero pensaba que servia para otra cosa, segun lei en otros manuales. Pero es bueno saber que puedes hacer llamadas a las etiqutas. Cito: El comando call es realmente util. Sirve para llamar a un programa y que se ejecute dentro de el nuestro, cuando acabe de ejecutarse seguira corriendo nuestro bat principal desde el call. Es mas o menos lo que buscaba, e imagino que me he explicado mal. Mi idea era mas en el sentido de una pregunta unica de modo: "Introduzca la extension de los formatos a listar: " ; de manera que se introduciria por comas: mp3, flac, mp4. Al dar al enter hiciese: dir /b "*.%1" ; "*.%2" ; "*.%3" De esa manera no tendria que sobreescribir el archivo varias veces. Imagino que seria necesario un bucle de lectura o algo asi; para ir añadiendo a alguna variable los resultados. Voy a ver si me entero de la estructura de los for en este lenguaje ^^. Lo dicho muchas gracias por tu respuesta
|
|
|
|
|
En línea
|
|
|
|
|
EleKtro H@cker
|
De nada para eso estamos  olvidate de tanto bucle xD, son útiles y esto se podría hacer con un FOR pero muchas veces se puede simplificar las cosas sin necesidad de bucles... Ahora que entiendo mejor tu idea, aqui tienes:
@echo off
Set /P Formatos=Introduzca la extension de los formatos a listar: Set Formatos=%formatos: =% Set Formatos=%formatos:,=; *.% Call :Listar %Formatos% Pause Exit
:Listar dir /b *.%*>"%nombre_archivo%.txt" Goto :EOF @echo off Set /P Formatos=Introduzca la extension de los formatos a listar: For /F "tokens=1-10 delims=, " %%a in ('Echo %formatos%') do ( Dir /B *.%%a; *.%%b; *.%%c; *.%%d; *.%%e; *.%%f; *.%%g; *.%%h; *.%%i>"%nombre_archivo%.txt") pause Exit Nota: Estos codes funcionan suponiendo que el usuario introduzca los formatos de tal manera mp3, flac, m4a, wma, wav, etc...o mp3,flac,m4a,wma,wav,etc...
PD: Los dos codes actuan igual, lo he comprobado, aunque al final con el FOR lo he simplificado más jaja, pero bueno, no siempre suele ser asi... creo que es mejor opción buscar alternativas y jugar con los parametros como en el primer code. No se si los demás pensarán como yo xDDDD, tu crea tus scripts como mejor sepas pero intentando simplificarlo. Saludos
|
|
|
|
« Última modificación: 23 Diciembre 2011, 19:13 por EleKtro H@cker »
|
En línea
|
Siempre habrá alguien más ignorante que uno mismo, Como por ejemplo el nuevo presidente de la SGAE: "La banda ancha es totalmente innecesaria para navegar convencionalmente, Solo sirve para descargar megas y megas grandisimos, Y tal." PD: Volviendo a la era de los 56 k.
|
|
|
ovichan
Desconectado
Mensajes: 14
|
Muchas gracias voy a analizar tu codigo, que empezando con el cuesta un pelo ^^
|
|
|
|
|
En línea
|
|
|
|
|
|