
Quiero descargar muchos archivos que tengan nombres similares: xxx/1.jpg
, xxx/2.jpg
, xxx/3.jpg
y así sucesivamente C:/Brawa/
. Entonces escribo:
CURL https://example/xxx/[1-3].jpg -o C:/Brawa/#1.jpg
Ahora quiero que el nombre del archivo de origen se corresponda con el nombre del archivo de destino: C:/Brawa/xxx/1.jpg
; C:/Brawa/xxx/2.jpg
; C:/Brawa/xxx/3.jpg
, etcétera.
Yo uso la línea de comando:
CURL https://example/xxx/[1-3].jpg -o --remote-name C:/Brawa/*.jpg
Algo no funciona, pero ¿qué hice mal?
Respuesta1
Creo que esto debería funcionar:
CURL https://example/xxx/[1-3].jpg -o --remote-name C:/Brawa/#1.jpg
Respuesta2
Los valores de las opciones deben ser adyacentes.Con todos los programas basados en Unix o Unix, y la mayoría de los basados en C, si especifica una opción con un valor, como aquí -o C:/some/path
, debe mantener la opción 'bandera' y su valor juntos, no puede insertar nada más en el medio. . En casi todos los casos, puede utilizar argumentos consecutivos como se muestra, o unsolteroargumento concatenado como -oC:/some/path
(para formato corto) o --output=c:/some/path
(signo igual agregado para formato largo, es decir, dos guiones). Esto es más obvio en Windows (CMD), donde normalmente se usa /flag:value
todo ejecutado juntos, lo que le disuade de intentar insertar algo intermedio.
Como comentaste en la respuesta de harrymc,--remote-name -o c:/some/path
analizacorrectamente pero no funciona, eso se debe a que dan instrucciones contradictorias y solo obedece la primera. -o c:/some/path --remote-name
también analizaría, pero solo obedecería al primero (que si es un archivo escribiría cada URL en el mismo archivo, dejando solo el último, y si es un directorio no escribiría en absoluto).
Aparte deLa respuesta de Anaksunaman.puedecambiar el directorioa la ubicación deseada, utilicesolo --remote-name
(o -O
mayúscula, de cualquier manera conNovalor), luego cambie el directorio nuevamente. CMD es compatible pushd
y popd
como la mayoría de los shells de Unix, por lo que
pushd c:\brawa\xxx & curl https://example/xxx/[1-3].jpg -O & popd
Respuesta3
Suponiendo que está utilizando una versión actualizada curl
(versión 7.73.0 o superior), debería poder agregar la nueva --output-dir
opción para especificar un directorio de salida, por ejemplo:
curl https://example/xxx/[1-3].jpg -O --output-dir "C:/Brawa/xxx"
Tenga en cuenta que -O
(oh mayúscula) es el mismo que --remote-name
en el ejemplo anterior.
Los binarios oficiales actualizados curl
para Windows están disponiblesaquíy la documentación de opciones para las versiones más recientes curl
está disponibleaquí.
Tenga en cuenta que para crear carpetas dinámicamente, puede usar la --create-dirs
opción para curl
(según la sección de la página de manual de curl para--output-dir
). Sin embargo, esto parece basarse en la --output-dir
opción del ejemplo anterior, por lo que cambiar este valor puede requerir secuencias de comandos adicionales (no pude obtener la sugerencia que figura enla respuesta de harrymca esta pregunta funciona correctamente en Windows 7).