批量下载来自网址的图片

时间:2017-08-21 12:20:17

标签: batch-file cmd

我需要使用以下格式从site.com/folder/下载300张图片:1.png2.png ... 300.png

有没有办法在批处理文件中或使用命令提示符执行此操作?

4 个答案:

答案 0 :(得分:4)

Wth curl喜欢这样:

curl -o "#1.png" http://example.com/folder/[1-300].png

答案 1 :(得分:2)

下面是一个从一个文件下载一些批处理代码的例子,如果不存在,可以通过该脚本创建,当然你可以在这个文件中添加或修改你想要的网址!

您可以在名为 Urls.txt

的文本文件中添加您的网址

首先,脚本检查名为Urls.txt的文本文件是否存在于执行此批处理的同一位置,并从中逐行读取url以下载它们! 所以,如果你想改变你的网址,只需要从批处理文本文件Urls.txt中更改它,我的意思是你可以创建一个文本文件并将其命名为Urls.txt并将你想要的内容放在网址上这个文件当然是逐行的,让脚本完成它的工作

@echo off
Mode 110,3 & color 0A
Title Download file from web using powershell and batch by Hackoo 2017
Set "List_Urls_File=Urls.txt"
If not exist "%List_Urls_File%" Call :Create_Urls_File
Setlocal enabledelayedexpansion
@For /f "delims=" %%a in ('Type "%List_Urls_File%"') do (
    Set "URL=%%a"
    Rem we set the Filename from the variable !url!
    @for %%# in (!url!) do ( set "File=%%~xn#" )
    Rem Check if the file name contains a dot "." 
    Rem If not we increment the counter +1 for file to be download
        ECHO !File! | FIND /I ".">Nul 2>&1
        If "!errorlevel!" NEQ "0" (
            Set /a Count+=1
            cls & echo(
            echo               Downloading file "File-!Count!.bat" from URL : "!URL!"
            Call :BalloonTip 'information' 10 '"Downloading File-!Count!.bat"' "'Please wait... Downloading File-!Count!.bat....'" 'info' 4
            Call :Download "%%a" "File-!Count!.bat"
        ) else (
            cls & echo(
            echo    Downloading file "!File!" from URL : "!URL!"
            Call :BalloonTip 'information' 10 '"Downloading !File!"' "'Please wait... Downloading !File!....'" 'info' 4

            Call :Download "%%a" "!File!"
        )
)
Explorer "%~dp0" & exit
::*********************************************************************************
:Download <url> <File>
Powershell.exe -command "(New-Object System.Net.WebClient).DownloadFile('%1','%2')"
exit /b
::*********************************************************************************
:Create_Urls_File
(
    echo https://pastebin.com/raw/XvyhRzT6
    echo https://pastebin.com/raw/QqnZ0MjQ
    echo https://pastebin.com/raw/tHsKw15V
    echo https://pastebin.com/raw/VCnTbLB6
    echo https://pastebin.com/raw/3zUTrWUz
    echo https://pastebin.com/raw/31auQeFz
    echo https://pastebin.com/raw/xF0uXThH
    echo https://pastebin.com/raw/uzsGQD1h
    echo https://pastebin.com/raw/3TmVYiZJ
    echo https://pastebin.com/raw/Ntc8SZLU
    echo https://pastebin.com/raw/jnpRBhwn
    echo https://www.virustotal.com/static/bin/vtuploader2.2.exe
    echo http://devbuilds.kaspersky-labs.com/devbuilds/KVRT/latest/full/KVRT.exe
)>"%List_Urls_File%"
exit /b
::*********************************************************************************
:BalloonTip $notifyicon $time $title $text $icon $Timeout
PowerShell  ^
  [reflection.assembly]::loadwithpartialname('System.Windows.Forms') ^| Out-Null; ^
 [reflection.assembly]::loadwithpartialname('System.Drawing') ^| Out-Null; ^
 $notify = new-object system.windows.forms.notifyicon; ^
  $notify.icon = [System.Drawing.SystemIcons]::%1; ^
  $notify.visible = $true; ^
  $notify.showballoontip(%2,%3,%4,%5); ^
  Start-Sleep -s %6; ^
  $notify.Dispose()
%End PowerShell%
exit /B
::*************************************************************************

答案 2 :(得分:1)

尝试使用winhttpjs.bat

set "baseLink=http://example.org/folder/"
for /l %%a in (1;1;300) do (
   winhttpjs.bat "%baseLink%%%a.png" -saveto %%a.png
)

答案 3 :(得分:0)

Numbered-Files Downloader 1.0

这是一个完整的批处理脚本,它完全符合您的要求。您不需要下载任何可执行文件,这是100%批处理脚本,它应该适用于任何(最近的)Windows安装。

您需要做的就是编辑 _URL 变量(第11行)并将“example.com/folder ...”替换为您要下载的文件的实际网址。之后,您可以运行脚本并获取文件。

  • 请注意,在您的网址中,此字符串: _NUMBERS _ 是一个关键字过滤器,将被最终下载功能中的增量数字替换。

您下载的所有文件都将保存在此脚本所在的目录中。您可以通过取消注释 _SAVE_PATH 变量(第15行)来选择其他目录。

最后,可以更改以下变量以配置一系列数字:

_START :文件编号以此值开头 _STEP :在每个文件之间切换 _END :文件编号以此值结尾。

随意修改&amp;如果您需要,请增强此脚本...

编号-DL.cmd

@echo off
setlocal ENABLEDELAYEDEXPANSION

rem QUESTION FROM:
rem https://stackoverflow.com/questions/45796990/batch-download-images-from-url-with-for#45796990


:VARIABLES

rem FILES URL
SET _URL=https://example.com/folder/_NUMBERS_.png

rem SAVE PATH
SET _SAVE_PATH=%~dp0
rem SET _SAVE_PATH=C:\Folder\

SET _START=1
SET _STEP=1
SET _END=300


rem HOW TO USE THE DOWNLOAD FUNCTION (SINGLE FILE):
rem
rem SET _URL=https://www.google.ca/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png
rem SET _SAVE_PATH=%~dp0_Google.png
rem CALL :DOWNLOAD %_URL% %_SAVE_PATH%


:DETAILS_DISPLAY

ECHO.
ECHO SCRIPT:     Numbered-Files Downloader 1.0
ECHO AUTHOR:     Frank Einstein
ECHO.
ECHO.
ECHO INPUTS
ECHO _URL:       %_URL%
ECHO _SAVE_PATH: %_SAVE_PATH%
ECHO.
ECHO _START:     %_START%
ECHO _STEP=      %_STEP%
ECHO _END=       %_END%
ECHO.
ECHO.


:PATH_FIX

rem REMOVE THE LAST CHAR IF IT IS "\"
IF "%_SAVE_PATH:~-1%" == "\" SET "_SAVE_PATH=%_SAVE_PATH:~0,-1%"


:DOWNLOAD_LOOP

SET FINAL_URL=%_URL%

FOR /L %%G IN (%_START%,%_STEP%,%_END%) DO (

    rem REPLACE URL'S KEYWORD WITH NUMBERS
    SET NUM=%%G
    SET FINAL_URL=%FINAL_URL:_NUMBERS_=!NUM!%

    rem CUMSTOM BATCH FUNCTION FOR DOWNLOADING FILES
    rem 
    rem SYNTAX:
    rem CALL :DOWNLOAD %URL% %SAVE_PATH%

    CALL :DOWNLOAD !FINAL_URL!

)

GOTO :EXIT


rem FUNCTIONS

:DOWNLOAD

setlocal

SET "_URL_=%1"
SET "_SAVE_TO_=%2"

rem EXTRACT THE FILENAME FROM URL (NEED TO FIX THIS PART?)

FOR %%F IN ("%_URL_%") DO SET _FILE_NAME_=%%~nxF
IF "%_SAVE_TO_:~-1%" == "\" SET "_SAVE_TO_=%_SAVE_TO_:~0,-1%"
IF [%2]==[] SET _SAVE_TO_=%~dp0%_FILE_NAME_%
IF NOT [%2]==[] SET "_SAVE_TO_=%_SAVE_TO_%\%_FILE_NAME_%"


:BITSADMIN

ECHO.
ECHO DOWNLOADING: "%_URL_%"
ECHO SAVING TO:   "%_SAVE_TO_%"
ECHO.

bitsadmin /transfer mydownloadjob /download /priority normal "%_URL_%" "%_SAVE_TO_%"

rem BITSADMIN DOWNLOAD EXAMPLE
rem bitsadmin  /transfer mydownloadjob  /download  /priority normal http://example.com/filename.zip  C:\Users\username\Downloads\filename.zip

endlocal

GOTO :EOF


:EXIT

ECHO.
ECHO.
ECHO END OF EXECUTION
ECHO.

PAUSE & EXIT /B