Tải xuống tệp hàng loạt tệp Windows từ một URL


113

Tôi đang cố tải xuống tệp từ một trang web (ví dụ : http://www.example.com/package.zip ) bằng cách sử dụng tệp loạt Windows. Tôi nhận được mã lỗi khi viết hàm bên dưới:

xcopy /E /Y "http://www.example.com/package.zip"

Tệp lô có vẻ không thích "/" sau http. Có cách nào để thoát các ký tự đó để không giả sử chúng là các tham số của hàm không?


Đây: stackoverflow.com/questions/28143160/… Tôi đã cố gắng tiếp tục các cách tải tệp xuống trong Windows chỉ bằng các công cụ gốc mà không có phần mềm của bên thứ ba.
npocmaka

Câu trả lời:


136

Với PowerShell 2.0 (Windows 7 được cài đặt sẵn), bạn có thể sử dụng:

(New-Object Net.WebClient).DownloadFile('http://www.example.com/package.zip', 'package.zip')

Bắt đầu với PowerShell 3.0 (Windows 8 được cài đặt sẵn), bạn có thể sử dụng Invoke-WebRequest:

Invoke-WebRequest http://www.example.com/package.zip -OutFile package.zip

Từ một tệp hàng loạt, chúng được gọi là:

powershell -Command "(New-Object Net.WebClient).DownloadFile('http://www.example.com/package.zip', 'package.zip')"
powershell -Command "Invoke-WebRequest http://www.example.com/package.zip -OutFile package.zip"

(PowerShell 2.0 có sẵn để cài đặt trên XP, 3.0 cho Windows 7)


2
Mát mẻ! Tốt hơn bitsadmin.exe, vì nó không bị phản đối.
sinelaw

@sevenforce, Lệnh Powershell 2.0 cũng hoạt động trong Powershell 3.0 hay bạn phải sử dụng cú pháp Powershell 3.0 đó?
Rich Signell

4
@RichSignell: lệnh 2.0 cũng hoạt động trong 3.0. Đối với lệnh 2.0, tôi nhận thấy rằng đối với đường dẫn đích không tuyệt đối, tệp sẽ được lưu liên quan đến thư mục chính của người dùng.
bảy

1
Thật đáng kinh ngạc. Tôi đã tìm kiếm điều này quá lâu. Cảm ơn bạn! Vẫn hoạt động vào năm 2017.
Albert MN.

2
Mã 2.0 đang hoạt động đối với tôi trên Win 7. Cập nhật và vì nó cũng hoạt động mà không cấp quyền quản trị PowerShell, hãy để đây là một bằng chứng hoàn hảo về khái niệm rằng việc nhấp vào tệp .bat.ps1tệp không xác định thực sự có thể làm hỏng nội dung của bạn.
1934286

97

Có một thành phần Windows tiêu chuẩn có thể đạt được những gì bạn đang cố gắng thực hiện: BITS . Nó đã được đưa vào Windows kể từ XP và 2000 SP3.

Chạy:

bitsadmin.exe /transfer "JobName" http://download.url/here.exe C:\destination\here.exe

Tên công việc chỉ đơn giản là tên hiển thị cho công việc tải xuống - hãy đặt nó thành tên mô tả công việc bạn đang làm.


14
Công cụ tốt! Nhưng win8 của tôi cho biết: "BITSAdmin không được dùng nữa và không được đảm bảo sẽ có sẵn trong các phiên bản Windows trong tương lai. Các công cụ quản trị cho dịch vụ BITS hiện được cung cấp bởi lệnh ghép ngắn BITS PowerShell."
Peteter

1
Như tôi đã đề cập, bitadmin không hoạt động trong các lô tự động chạy từ trình lập lịch tác vụ :(
TomeeNS

1
@cmroanirgo bitsadminkhông có sẵn trong Windows XP Home Edition.
xếp tầng

1
Vẫn diễn ra mạnh mẽ trong Windows 10 Pro
Orwellophile

3
Cảm ơn bạn! Làm việc như một sự quyến rũ trên một máy tính bị nhiễm virut mà không có cách nào khác có thể tải xuống tệp từ web. (Ngay cả powershell cũng không thể khởi chạy)
szab.kel

29

Điều này có thể hơi lạc đề, nhưng bạn có thể dễ dàng tải xuống tệp bằng Powershell . Powershell đi kèm với các phiên bản Windows hiện đại nên bạn không phải cài đặt thêm bất kỳ thứ gì trên máy tính. Tôi đã học cách làm điều đó bằng cách đọc trang này:

http://teusje.wordpress.com/2011/02/19/download-file-with-powershell/

Mã là:

$webclient = New-Object System.Net.WebClient
$url = "http://www.example.com/file.txt"
$file = "$pwd\file.txt"
$webclient.DownloadFile($url,$file)

2
Nếu bạn tìm kiếm trên blog đó, có các mẫu powershell khác giúp bạn dễ dàng hơn với phiên bản PowerShell 3.0 mới
juFo 25/02/13

Tôi không nghĩ rằng bạn cần SystemtrongSystem.Net.WebClient
1934286

25

Lần cuối tôi kiểm tra, không có lệnh dòng lệnh nào để kết nối với URL từ dòng lệnh MS. Hãy thử wget dành cho Windows:
http://gnuwin32.sourceforge.net/packages/wget.htm

hoặc URL2File:
http://www.chami.com/free/url2file_wincon.html

Trong Linux, bạn có thể sử dụng "wget".

Ngoài ra, bạn có thể thử VBScript. Chúng giống như các chương trình dòng lệnh, nhưng chúng là các tập lệnh được thông dịch bởi máy chủ lưu trữ tập lệnh wscript.exe. Dưới đây là một ví dụ về tải xuống tệp bằng VBS:
/server/29707/download-file-from-vbscript


2
Bạn không cần wget hoặc bất kỳ tích hợp bên thứ ba nào. BITS (Cấu phần Windows tiêu chuẩn kể từ XP) có thể thực hiện điều đó với tiện ích bitsadmin từ dòng lệnh MS. Câu trả lời được đăng - mặc dù hơi muộn (chậm hơn 2 năm?)
brainwood

18

Đang tải xuống tệp trong PURE BATCH ...

Không có bất kỳ JScript, VBScript, Powershell, v.v. Chỉ có Batch thuần túy!

Một số người nói rằng không thể tải xuống tệp với tập lệnh hàng loạt mà không sử dụng bất kỳ JScript hoặc VBScript nào, v.v. Nhưng họ chắc chắn đã sai!

Đây là một phương pháp đơn giản có vẻ hoạt động khá tốt để tải xuống các tệp trong tập lệnh hàng loạt của bạn. Nó sẽ hoạt động trên hầu hết mọi URL của tệp. Thậm chí có thể sử dụng máy chủ proxy nếu bạn cần.

Để tải xuống tệp, chúng tôi có thể sử dụng BITSADMIN.EXE từ hệ thống Windows. Không cần tải xuống / cài đặt bất kỳ thứ gì hoặc sử dụng bất kỳ JScript hoặc VBScript nào, v.v. Bitsadmin.exe có mặt trên hầu hết các phiên bản Windows, có thể là từ XP đến Windows 10.

Thưởng thức!


SỬ DỤNG:

Bạn có thể sử dụng lệnh BITSADMIN trực tiếp, như sau:
bitsadmin /transfer mydownloadjob /download /priority FOREGROUND "http://example.com/File.zip" "C:\Downloads\File.zip"

Máy chủ proxy:
Để kết nối bằng proxy, hãy sử dụng lệnh này trước khi tải xuống.
bitsadmin /setproxysettings mydownloadjob OVERRIDE "proxy-server.com:8080" "<local>"

Nhấp vào LINK này nếu bạn muốn biết thêm thông tin về BITSadmin.exe



KHẮC PHỤC SỰ CỐ : Nếu bạn gặp lỗi này: "Không thể kết nối với BITS - 0x80070422"
Hãy đảm bảo rằng dịch vụ windows "Dịch vụ Truyền tải Thông minh Nền (BITS)" được bật và thử lại. (Nó phải được bật theo mặc định.)


CÁC CHỨC NĂNG TÙY CHỈNH
Call :DOWNLOAD_FILE "URL"
Call :DOWNLOAD_PROXY_ON "SERVER:PORT"
Call :DOWNLOAD_PROXY_OFF

Tôi đã thực hiện 3 hàm này để đơn giản hóa các lệnh bitsadmin. Nó dễ sử dụng và dễ nhớ hơn. Nó có thể đặc biệt hữu ích nếu bạn đang sử dụng nó nhiều lần trong các tập lệnh của mình.

XIN LƯU Ý ...
Trước khi sử dụng các hàm này, trước tiên bạn cần sao chép chúng từ CUSTOM_FUNCTIONS.CMD vào cuối tập lệnh của mình. Ngoài ra còn có một ví dụ hoàn chỉnh: DOWNLOAD-EXAMPLE.CMD

: DOWNLOAD_FILE "URL"
Chức năng chính, sẽ tải xuống các tệp từ URL.

: DOWNLOAD_PROXY_ON "SERVER: PORT"
(Tùy chọn) Bạn có thể sử dụng chức năng này nếu cần sử dụng máy chủ proxy.
Gọi hàm: DOWNLOAD_PROXY_OFF sẽ tắt máy chủ proxy.

THÍ DỤ:
CALL :DOWNLOAD_PROXY_ON "proxy-server.com:8080"
CALL :DOWNLOAD_FILE "http://example.com/File.zip" "C:\Downloads\File.zip"
CALL :DOWNLOAD_PROXY_OFF


CUSTOM_FUNCTIONS.CMD

:DOWNLOAD_FILE
    rem BITSADMIN COMMAND FOR DOWNLOADING FILES:
    bitsadmin /transfer mydownloadjob /download /priority FOREGROUND %1 %2
GOTO :EOF

:DOWNLOAD_PROXY_ON
    rem FUNCTION FOR USING A PROXY SERVER:
    bitsadmin /setproxysettings mydownloadjob OVERRIDE %1 "<local>"
GOTO :EOF

:DOWNLOAD_PROXY_OFF
    rem FUNCTION FOR STOP USING A PROXY SERVER:
    bitsadmin /setproxysettings mydownloadjob NO_PROXY
GOTO :EOF

TẢI XUỐNG-EXAMPLE.CMD

@ECHO OFF
SETLOCAL

rem FOR DOWNLOADING FILES, THIS SCRIPT IS USING THE "BITSADMIN.EXE" SYSTEM FILE.
rem IT IS PRESENT ON MOST WINDOWS VERSION, PROBABLY FROM WINDOWS XP TO WINDOWS 10.


:SETUP

rem URL (5MB TEST FILE):
SET "FILE_URL=http://ipv4.download.thinkbroadband.com/5MB.zip"

rem SAVE IN CUSTOM LOCATION:
rem SET "SAVING_TO=C:\Folder\5MB.zip"

rem SAVE IN THE CURRENT DIRECTORY
SET "SAVING_TO=5MB.zip"
SET "SAVING_TO=%~dp0%SAVING_TO%"

:MAIN

ECHO.
ECHO DOWNLOAD SCRIPT EXAMPLE
ECHO.
ECHO FILE URL: "%FILE_URL%"
ECHO SAVING TO:  "%SAVING_TO%"
ECHO.

rem UNCOMENT AND MODIFY THE NEXT LINE IF YOU NEED TO USE A PROXY SERVER:
rem CALL :DOWNLOAD_PROXY_ON "PROXY-SERVER.COM:8080"

rem THE MAIN DOWNLOAD COMMAND:
CALL :DOWNLOAD_FILE "%FILE_URL%" "%SAVING_TO%"

rem UNCOMMENT NEXT LINE FOR DISABLING THE PROXY (IF YOU USED IT):
rem CALL :DOWNLOAD_PROXY_OFF

:RESULT
ECHO.
IF EXIST "%SAVING_TO%" ECHO YOUR FILE HAS BEEN SUCCESSFULLY DOWNLOADED.
IF NOT EXIST "%SAVING_TO%" ECHO ERROR, YOUR FILE COULDN'T BE DOWNLOADED.
ECHO.

:EXIT_SCRIPT
PAUSE
EXIT /B




rem FUNCTIONS SECTION


:DOWNLOAD_FILE
    rem BITSADMIN COMMAND FOR DOWNLOADING FILES:
    bitsadmin /transfer mydownloadjob /download /priority FOREGROUND %1 %2
GOTO :EOF

:DOWNLOAD_PROXY_ON
    rem FUNCTION FOR USING A PROXY SERVER:
    bitsadmin /setproxysettings mydownloadjob OVERRIDE %1 "<local>"
GOTO :EOF

:DOWNLOAD_PROXY_OFF
    rem FUNCTION FOR STOP USING A PROXY SERVER:
    bitsadmin /setproxysettings mydownloadjob NO_PROXY
GOTO :EOF

1
Tôi vừa cập nhật câu trả lời của mình ... Rõ ràng, tốc độ tải xuống cực kỳ chậm, vì vậy tôi đã thay đổi tham số từ "/ ưu tiên bình thường" thành "/ ưu tiên nền trước" và nó đã khắc phục được sự cố. Nó sẽ sử dụng 100% băng thông hiện có của bạn. (Thay vì ~ 5%)
Frank Einstein

11
' Create an HTTP object
myURL = "http://www.google.com"
Set objHTTP = CreateObject( "WinHttp.WinHttpRequest.5.1" )

' Download the specified URL
objHTTP.Open "GET", myURL, False
objHTTP.Send
intStatus = objHTTP.Status

If intStatus = 200 Then
  WScript.Echo " " & intStatus & " A OK " +myURL
Else
  WScript.Echo "OOPS" +myURL
End If

sau đó

C:\>cscript geturl.vbs
Microsoft (R) Windows Script Host Version 5.7
Copyright (C) Microsoft Corporation. All rights reserved.

200 A OK http://www.google.com

hoặc chỉ cần nhấp đúp vào nó để kiểm tra trong windows


1
Đây chỉ là tải xuống bộ nhớ và chưa ghi vào tệp. Kiểm tra câu trả lời này để tải về vào một tập tin: stackoverflow.com/a/2973344/977804
Daniel

5

AFAIK, Windows không có công cụ dòng lệnh tích hợp để tải xuống tệp. Nhưng bạn có thể làm điều đó từ VBScript và bạn có thể tạo tệp VBScript từ hàng loạt bằng cách sử dụng chuyển hướng echo và đầu ra:

@echo off

rem Windows has no built-in wget or curl, so generate a VBS script to do it:
rem -------------------------------------------------------------------------
set DLOAD_SCRIPT=download.vbs
echo Option Explicit                                                    >  %DLOAD_SCRIPT%
echo Dim args, http, fileSystem, adoStream, url, target, status         >> %DLOAD_SCRIPT%
echo.                                                                   >> %DLOAD_SCRIPT%
echo Set args = Wscript.Arguments                                       >> %DLOAD_SCRIPT%
echo Set http = CreateObject("WinHttp.WinHttpRequest.5.1")              >> %DLOAD_SCRIPT%
echo url = args(0)                                                      >> %DLOAD_SCRIPT%
echo target = args(1)                                                   >> %DLOAD_SCRIPT%
echo WScript.Echo "Getting '" ^& target ^& "' from '" ^& url ^& "'..."  >> %DLOAD_SCRIPT%
echo.                                                                   >> %DLOAD_SCRIPT%
echo http.Open "GET", url, False                                        >> %DLOAD_SCRIPT%
echo http.Send                                                          >> %DLOAD_SCRIPT%
echo status = http.Status                                               >> %DLOAD_SCRIPT%
echo.                                                                   >> %DLOAD_SCRIPT%
echo If status ^<^> 200 Then                                            >> %DLOAD_SCRIPT%
echo    WScript.Echo "FAILED to download: HTTP Status " ^& status       >> %DLOAD_SCRIPT%
echo    WScript.Quit 1                                                  >> %DLOAD_SCRIPT%
echo End If                                                             >> %DLOAD_SCRIPT%
echo.                                                                   >> %DLOAD_SCRIPT%
echo Set adoStream = CreateObject("ADODB.Stream")                       >> %DLOAD_SCRIPT%
echo adoStream.Open                                                     >> %DLOAD_SCRIPT%
echo adoStream.Type = 1                                                 >> %DLOAD_SCRIPT%
echo adoStream.Write http.ResponseBody                                  >> %DLOAD_SCRIPT%
echo adoStream.Position = 0                                             >> %DLOAD_SCRIPT%
echo.                                                                   >> %DLOAD_SCRIPT%
echo Set fileSystem = CreateObject("Scripting.FileSystemObject")        >> %DLOAD_SCRIPT%
echo If fileSystem.FileExists(target) Then fileSystem.DeleteFile target >> %DLOAD_SCRIPT%
echo adoStream.SaveToFile target                                        >> %DLOAD_SCRIPT%
echo adoStream.Close                                                    >> %DLOAD_SCRIPT%
echo.                                                                   >> %DLOAD_SCRIPT%
rem -------------------------------------------------------------------------

cscript //Nologo %DLOAD_SCRIPT% http://example.com targetPathAndFile.html

Giải thích thêm ở đây


Có lý do gì để không thực hiện việc này trong một tệp riêng và chỉ cần gọi tệp VBScript từ lô? Đây sẽ là một mớ hỗn độn khủng khiếp nếu bạn cần chỉnh sửa nó.
seadoggie01

4
  1. Tải xuống Wget từ đây http://downloads.sourceforge.net/gnuwin32/wget-1.11.4-1-setup.exe

  2. Sau đó cài đặt nó.

  3. Sau đó, tạo một số tệp .bat và đặt nó vào

    @echo off
    
    for /F "tokens=2,3,4 delims=/ " %%i in ('date/t') do set y=%%k
    for /F "tokens=2,3,4 delims=/ " %%i in ('date/t') do set d=%%k%%i%%j
    for /F "tokens=5-8 delims=:. " %%i in ('echo.^| time ^| find "current" ') do set t=%%i%%j
    set t=%t%_
    if "%t:~3,1%"=="_" set t=0%t%
    set t=%t:~0,4%
    set "theFilename=%d%%t%"
    echo %theFilename%
    
    
    cd "C:\Program Files\GnuWin32\bin"
    wget.exe --output-document C:\backup\file_%theFilename%.zip http://someurl/file.zip
    
  4. Điều chỉnh URL và đường dẫn tệp trong tập lệnh

  5. Chạy tệp và lợi nhuận!


3

Nếu bitsadmin không phải là tách trà của bạn, bạn có thể sử dụng lệnh PowerShell này:

Start-BitsTransfer -Source http://www.foo.com/package.zip -Destination C:\somedir\package.zip

Tôi muốn tải xuống .exe và tôi cũng đã sử dụng mã này và không hoạt động .. Tôi có thể tải xuống .exe bằng tập lệnh hàng loạt không?
MÀ. John

3

Sử dụng Bat To Exe Converter

Tạo một tệp hàng loạt và đặt một cái gì đó giống như mã bên dưới vào nó

%extd% /download http://www.examplesite.com/file.zip file.zip

hoặc là

%extd% /download http://stackoverflow.com/questions/4619088/windows-batch-file-file-download-from-a-url thistopic.html

và chuyển đổi nó thành exe.


3

Thay vì wget, bạn cũng có thể sử dụng aria2 để tải xuống tệp từ một URL cụ thể.

Xem liên kết sau sẽ giải thích thêm về aria2:

https://aria2.github.io/


+1 vì đã đề cập đến công cụ này mà tôi chưa biết. quá xấu nó có rắc rối với HTTPS như wget đã (đã không tìm thấy một cách để thiết lập một chuỗi CA chưa)
Jeroen Wiert Pluimers

2

BATCH có thể không thực hiện được điều này, nhưng bạn có thể sử dụng JScript hoặc VBScript nếu không muốn sử dụng các công cụ không được cài đặt theo mặc định với Windows.

Ví dụ đầu tiên trên trang này tải xuống tệp nhị phân trong VBScript: http://www.robvanderwoude.com/vbstech_internet_download.php

Câu trả lời SO này tải xuống tệp bằng JScript (IMO, ngôn ngữ tốt hơn): Windows Script Host (jscript): làm cách nào để tải xuống tệp nhị phân?

Sau đó, tập lệnh hàng loạt của bạn có thể chỉ gọi ra JScript hoặc VBScript để tải xuống tệp.


2

Điều này sẽ hoạt động Tôi đã làm như sau cho một dự án máy chủ trò chơi. Nó sẽ tải xuống zip và giải nén nó vào thư mục mà bạn chỉ định.

Lưu dưới dạng name.bat hoặc name.cmd

@echo off
set downloadurl=http://media.steampowered.com/installer/steamcmd.zip
set downloadpath=C:\steamcmd\steamcmd.zip
set directory=C:\steamcmd\
%WINDIR%\System32\WindowsPowerShell\v1.0\powershell.exe -Command "& {Import-Module BitsTransfer;Start-BitsTransfer '%downloadurl%' '%downloadpath%';$shell = new-object -com shell.application;$zip = $shell.NameSpace('%downloadpath%');foreach($item in $zip.items()){$shell.Namespace('%directory%').copyhere($item);};remove-item '%downloadpath%';}"
echo download complete and extracted to the directory.
pause

Bản gốc: https://github.com/C0nw0nk/SteamCMD-AutoUpdate-Any-Gameserver/blob/master/steam.cmd


Tôi muốn tải xuống .exe và tôi đã sử dụng mã này và không hoạt động .. Tôi có thể tải xuống .exe bằng tập lệnh hàng loạt không?
MÀ. John

1

Tôi đã tìm thấy tập lệnh VB này:

http://www.olafrv.com/?p=385

Hoạt động như một sự quyến rũ. Được định cấu hình như một hàm với một lệnh gọi hàm rất đơn giản:

SaveWebBinary "http://server/file1.ext1", "C:/file2.ext2"

Ban đầu từ: http://www.ericphelps.com/scripting/samples/BinaryDownload/index.htm

Đây là mã đầy đủ cho dự phòng:

Function SaveWebBinary(strUrl, strFile) 'As Boolean
Const adTypeBinary = 1
Const adSaveCreateOverWrite = 2
Const ForWriting = 2
Dim web, varByteArray, strData, strBuffer, lngCounter, ado
    On Error Resume Next
    'Download the file with any available object
    Err.Clear
    Set web = Nothing
    Set web = CreateObject("WinHttp.WinHttpRequest.5.1")
    If web Is Nothing Then Set web = CreateObject("WinHttp.WinHttpRequest")
    If web Is Nothing Then Set web = CreateObject("MSXML2.ServerXMLHTTP")
    If web Is Nothing Then Set web = CreateObject("Microsoft.XMLHTTP")
    web.Open "GET", strURL, False
    web.Send
    If Err.Number <> 0 Then
        SaveWebBinary = False
        Set web = Nothing
        Exit Function
    End If
    If web.Status <> "200" Then
        SaveWebBinary = False
        Set web = Nothing
        Exit Function
    End If
    varByteArray = web.ResponseBody
    Set web = Nothing
    'Now save the file with any available method
    On Error Resume Next
    Set ado = Nothing
    Set ado = CreateObject("ADODB.Stream")
    If ado Is Nothing Then
        Set fs = CreateObject("Scripting.FileSystemObject")
        Set ts = fs.OpenTextFile(strFile, ForWriting, True)
        strData = ""
        strBuffer = ""
        For lngCounter = 0 to UBound(varByteArray)
            ts.Write Chr(255 And Ascb(Midb(varByteArray,lngCounter + 1, 1)))
        Next
        ts.Close
    Else
        ado.Type = adTypeBinary
        ado.Open
        ado.Write varByteArray
        ado.SaveToFile strFile, adSaveCreateOverWrite
        ado.Close
    End If
    SaveWebBinary = True
End Function

1

Câu hỏi này có câu trả lời rất tốt ở đây . Mã của tôi hoàn toàn dựa trên câu trả lời đó với một số sửa đổi.

Lưu đoạn mã dưới đây dưới dạng wget.bat và đặt nó vào đường dẫn hệ thống của bạn (ví dụ: Đặt nó vào một thư mục và thêm thư mục này vào đường dẫn hệ thống.)

Bạn có thể sử dụng nó trong cli của mình như sau:

wget url/to/file [?custom_name]

đâu url_to_filelà bắt buộc và đâu custom_namelà tùy chọn

  1. Nếu tên không được cung cấp, thì tệp đã tải xuống sẽ được lưu bằng tên của chính nó từ url.
  2. Nếu tên được cung cấp, thì tệp sẽ được lưu bằng tên mới.

Url tệp và tên tệp đã lưu được hiển thị bằng văn bản màu ansi. Nếu điều đó gây ra sự cố cho bạn, hãy kiểm tra dự án github này .

@echo OFF
setLocal EnableDelayedExpansion
set Url=%1
set Url=!Url:http://=!
set Url=!Url:/=,!
set Url=!Url:%%20=?!
set Url=!Url: =?!

call :LOOP !Url!

set FileName=%2
if "%2"=="" set FileName=!FN!

echo.
echo.Downloading: [1;33m%1[0m to [1;33m\!FileName![0m

powershell.exe -Command wget %1 -OutFile !FileName!

goto :EOF
:LOOP
if "%1"=="" goto :EOF
set FN=%1
set FN=!FN:?= !
shift
goto :LOOP

PS Mã này yêu cầu bạn phải cài đặt PowerShell.


1

Bạn có thể thiết lập một tác vụ đã lên lịch bằng wget, sử dụng trường “Chạy” trong tác vụ đã lên lịch như sau:

C:\wget\wget.exe -q -O nul "http://www.google.com/shedule.me"

1

Có một tiện ích (cư trú với CMD) trên Windows có thể chạy từ CMD (nếu bạn có quyền ghi):

set url=https://www.nsa.org/content/hl-images/2017/02/09/NSA.jpg
set file=file.jpg
certutil -urlcache -split -f %url% %file%
echo Done.

Tích hợp sẵn ứng dụng Windows. Không cần tải xuống bên ngoài.

Đã thử nghiệm trên Win 10


-3

sử dụng ftp:

(ftp *yourewebsite.com*-a)
cd *directory*
get *filename.doc*
close

Thay đổi mọi thứ bằng dấu hoa thị để phù hợp với hoàn cảnh của bạn.


Chắc chắn phải phụ thuộc vào máy chủ lưu trữ tệp để hỗ trợ FTP.
PnP

Questin liên quan đến http, không phải ftp
Ben
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.