विंडोज बैच फ़ाइल एक यूआरएल से डाउनलोड करें


113

मैं एक वेबसाइट (उदा। Http://www.example.com/package.zip ) से एक विंडोज़ बैच फ़ाइल का उपयोग करके एक फ़ाइल डाउनलोड करने की कोशिश कर रहा हूँ । नीचे एक फ़ंक्शन लिखने पर मुझे एक त्रुटि कोड मिल रहा है:

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

Http के बाद बैच फ़ाइल "/" को पसंद नहीं करती है। वहाँ उन वर्णों से बचने के लिए कोई तरीका है तो यह नहीं मानती कि वे फ़ंक्शन पैरामीटर हैं?


यहाँ: stackoverflow.com/questions/28143160/… मैंने उन तरीकों को फिर से शुरू करने की कोशिश की है कि कैसे बिना किसी थर्ड पार्टी सॉफ्टवेयर के केवल देशी टूल्स का उपयोग करके विंडोज में फाइल डाउनलोड की जा सकती है।
npocmaka

जवाबों:


137

PowerShell 2.0 (विंडोज 7 प्रीइंस्टॉल्ड) के साथ आप उपयोग कर सकते हैं:

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

PowerShell 3.0 (विंडोज 8 प्रीइंस्टॉल्ड) के साथ शुरू करना आप उपयोग कर सकते हैं Invoke-WebRequest:

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

एक बैच फ़ाइल से उन्हें बुलाया जाता है:

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 Windows 7 के लिए XP, 3.0 पर स्थापना के लिए उपलब्ध है)


2
ठंडा! बिट्सडैम। Exe से बेहतर है, क्योंकि यह पदावनत नहीं है।
14:53 पर sinelaw

@sevenforce, PowerShell 3.0 में PowerShell 2.0 आदेश भी काम करता है, या आप करते है कि PowerShell 3.0 सिंटैक्स का उपयोग के लिए?
रिच सिग्नल नोवेल

4
@RichSignell: 2.0 कमांड भी 3.0 में काम करता है। जिस तरह से मैंने देखा 2.0 कमांड के लिए, कि एक गैर-निरपेक्ष लक्ष्य पथ के लिए फ़ाइल को उपयोगकर्ता के होम फोल्डर के सापेक्ष सहेजा जाएगा।
सात

1
ये अद्भुत है। मैं इसके लिए बहुत समय से देख रहा हूं। धन्यवाद! अभी भी 2017 में काम करता है।
अल्बर्ट एमएन।

2
2.0 कोड मेरे लिए अप-टू-डेट विन 7. पर काम कर रहा है और चूंकि यह पॉवरशेल एडमिन की अनुमति के बिना भी काम करता है, इसलिए इस स्टैंड को अवधारणा का एक आदर्श प्रमाण के रूप में दें कि अज्ञात .batऔर .ps1फ़ाइलों पर क्लिक करने से वास्तव में आपका सामान खराब हो सकता है।
1934286

97

एक मानक विंडोज घटक है जो आप जो करने की कोशिश कर रहे हैं उसे प्राप्त कर सकते हैं: बिट्स । यह XP और 2000 SP3 के बाद से विंडोज में शामिल किया गया है।

Daud:

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

नौकरी का नाम केवल डाउनलोड नौकरी के लिए प्रदर्शन नाम है - इसे उस चीज़ पर सेट करें जो यह वर्णन करता है कि आप क्या कर रहे हैं।


14
अच्छा उपकरण! लेकिन मेरी win8 कहती है: "BITSAdmin पदावनत है और भविष्य के विंडोज के संस्करणों में उपलब्ध होने की गारंटी नहीं है। BITS सेवा के लिए प्रशासनिक उपकरण अब BITS PowerShell cmdlets द्वारा प्रदान किए गए हैं।"
पेटेटर

1
जैसा कि मैंने पहले ही उल्लेख किया है कि
बिट्सडमिन

1
bitsadminWindows XP Home संस्करण में @cmroanirgo उपलब्ध नहीं है।
कैस्केडिंग-शैली

1
अभी भी विंडोज 10 प्रो में मजबूत हो रहा है
Orwellophile

3
धन्यवाद! एक संक्रमित कंप्यूटर पर एक आकर्षण की तरह काम किया, जिसमें वेब से फ़ाइल डाउनलोड करने का कोई अन्य संभव तरीका नहीं है। (यहां तक ​​कि
शक्तियां

29

यह थोड़ा बंद विषय हो सकता है, लेकिन आप बहुत आसानी से Powershell का उपयोग करके एक फ़ाइल डाउनलोड कर सकते हैं । पॉवर्सशेल विंडोज के आधुनिक संस्करणों के साथ आता है ताकि आपको कंप्यूटर पर कोई अतिरिक्त सामान स्थापित न करना पड़े। मैंने इस पृष्ठ को पढ़कर इसे कैसे सीखा:

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

कोड था:

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

2
यदि आप उस ब्लॉग को खोजते हैं तो अन्य पॉवरशेल नमूने हैं जो नए PowerShell संस्करण 3.0 के साथ आसान बनाते हैं
juFo

मुझे नहीं लगता कि आपको SystemSystem.Net.WebClient
1934286

25

पिछली बार मैंने जाँच की थी, MS कमांड लाइन से URL से जुड़ने के लिए कमांड लाइन कमांड नहीं है। Windows के लिए wget आज़माएं:
http://gnuwin32.sourceforge.net/packages/wget.htm

या URL2File:
http://www.chami.com/free/url2file_wincon.html

लिनक्स में, आप "wget" का उपयोग कर सकते हैं।

वैकल्पिक रूप से, आप VBScript की कोशिश कर सकते हैं। वे कमांड लाइन प्रोग्राम की तरह हैं, लेकिन वे स्क्रिप्ट की व्याख्या wscript.exe स्क्रिप्ट होस्ट द्वारा की जाती हैं। यहां VBS का उपयोग करके फ़ाइल डाउनलोड करने का एक उदाहरण है:
/server/29707/download-file-from-vbscript


2
आपको wget या किसी तीसरे पक्ष के एकीकरण की आवश्यकता नहीं है। बिट्स (एक्सपी के बाद से मानक विंडोज घटक) एमएस कमांड लाइन से बिटसैडमिन उपयोगिता के साथ कर सकते हैं। उत्तर पोस्ट किया गया - भले ही थोड़ा देर से (2 साल पीछे?)
ब्रेनवुड

18

PURE BATCH में फ़ाइलें डाउनलोड कर रहा है ...

किसी भी JScript, VBScript, Powershell, आदि के बिना ... केवल शुद्ध बैच!

कुछ लोग कह रहे हैं कि किसी भी JScript या VBScript, आदि का उपयोग किए बिना बैच स्क्रिप्ट के साथ फ़ाइलों को डाउनलोड करना संभव नहीं है ... लेकिन वे निश्चित रूप से गलत हैं!

यहां एक सरल विधि है जो आपकी बैच स्क्रिप्ट में फ़ाइलों को डाउनलोड करने के लिए बहुत अच्छी तरह से काम करती है। यह लगभग किसी भी फ़ाइल के URL पर काम कर रहा होना चाहिए। यदि आपको इसकी आवश्यकता है तो प्रॉक्सी सर्वर का उपयोग करना भी संभव है।

फ़ाइलों को डाउनलोड करने के लिए, हम विंडोज सिस्टम से BITSADMIN.EXE का उपयोग कर सकते हैं । कुछ भी डाउनलोड करने / स्थापित करने या किसी JScript या VBScript, आदि का उपयोग करने की कोई आवश्यकता नहीं है। Bitsadmin.exe अधिकांश विंडोज़ संस्करणों पर मौजूद है, शायद XP से विंडोज 10 तक।

का आनंद लें!


उपयोग:

आप इस तरह से सीधे BITSADMIN कमांड का उपयोग कर सकते हैं:
bitsadmin /transfer mydownloadjob /download /priority FOREGROUND "http://example.com/File.zip" "C:\Downloads\File.zip"

प्रॉक्सी सर्वर: प्रॉक्सी
का उपयोग कर कनेक्ट करने के लिए, डाउनलोड करने से पहले इस कमांड का उपयोग करें।
bitsadmin /setproxysettings mydownloadjob OVERRIDE "proxy-server.com:8080" "<local>"

यदि आप BITSadmin.exe के बारे में अधिक जानकारी चाहते हैं तो इस लिंक पर क्लिक करें


TROUBLESHOOTING:
यदि आपको यह त्रुटि मिलती है: "BITS - 0x80070422 से कनेक्ट करने में असमर्थ"
सुनिश्चित करें कि विंडोज़ सेवा "बैकग्राउंड इंटेलिजेंट ट्रांसफर सर्विस (BITS)" सक्षम है और पुनः प्रयास करें। (यह डिफ़ॉल्ट रूप से सक्षम होना चाहिए।)


कस्टम समारोह
Call :DOWNLOAD_FILE "URL"
Call :DOWNLOAD_PROXY_ON "SERVER:PORT"
Call :DOWNLOAD_PROXY_OFF

मैंने बिटसडमिन कमांड को सरल बनाने के लिए ये 3 कार्य किए। इसे इस्तेमाल करना और याद रखना आसान है। यह विशेष रूप से उपयोगी हो सकता है यदि आप इसे अपनी लिपियों में कई बार उपयोग कर रहे हैं।

कृपया ध्यान दें ...
इन कार्यों का उपयोग करने से पहले, आपको पहले CUSTOM_FUNCTIONS.CMD से उन्हें अपनी स्क्रिप्ट के अंत में कॉपी करना होगा। एक पूरा उदाहरण भी है: DOWNLOAD-EXAMPLE.CMD

: DOWNLOAD_FILE "URL"
मुख्य फ़ंक्शन, URL से फ़ाइलें डाउनलोड करेगा।

: DOWNLOAD_PROXY_ON "सर्वर: पोर्ट"
(वैकल्पिक) यदि आप प्रॉक्सी सर्वर का उपयोग करना चाहते हैं, तो आप इस फ़ंक्शन का उपयोग कर सकते हैं।
कॉलिंग: DOWNLOAD_PROXY_OFF फ़ंक्शन प्रॉक्सी सर्वर को अक्षम कर देगा।

उदाहरण:
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

डाउनलोड-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
मैंने अभी-अभी अपना उत्तर अपडेट किया है ... जाहिर है, डाउनलोड की गति बहुत धीमी थी, इसलिए मैंने "/ प्राथमिकता सामान्य" से पैरामीटर को "प्राथमिकता वरीयता" में बदल दिया और इसने समस्या को ठीक कर दिया। यह आपके उपलब्ध बैंडविड्थ के अब 100% का उपयोग करना चाहिए। (~ 5% के बजाय)
फ्रैंक आइंस्टीन

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

फिर

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

या सिर्फ डबल क्लिक करें यह विंडोज़ में परीक्षण करने के लिए


1
यह केवल मेमोरी में डाउनलोड हो रहा है और अभी तक किसी फाइल में नहीं लिखा है। फ़ाइल में डाउनलोड करने के लिए इस उत्तर की जाँच करें: stackoverflow.com/a/2973344/977804
डैनियल

5

AFAIK, Windows में फ़ाइल डाउनलोड करने के लिए अंतर्निहित कमांडलाइन उपकरण नहीं है। लेकिन आप इसे VBScript से कर सकते हैं, और आप प्रतिध्वनि और आउटपुट पुनर्निर्देशन का उपयोग करके बैच से VBScript फ़ाइल उत्पन्न कर सकते हैं:

@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

यहाँ और अधिक स्पष्टीकरण


अलग फ़ाइल में ऐसा नहीं करने का कोई कारण और बस बैच से VBScript फ़ाइल को कॉल करें? यदि आपको कभी भी इसे संपादित करने की आवश्यकता हो तो यह एक भयानक गड़बड़ है।
seadoggie01

4
  1. डाउनलोड Wget यहाँ से http://downloads.sourceforge.net/gnuwin32/wget-1.11.4-1-1-setup.exe

  2. फिर इसे इंस्टॉल करें।

  3. फिर कुछ .bat फ़ाइल बनाएं और इसे इसमें डालें

    @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. स्क्रिप्ट में URL और फ़ाइल पथ को समायोजित करें

  5. फ़ाइल और लाभ चलाएं!

3

आप http पर xcopy का उपयोग नहीं कर सकते। विंडोज़ के लिए wget डाउनलोड करने का प्रयास करें। यह चाल हो सकता है। यह http के माध्यम से फ़ाइलों के गैर-इंटरैक्टिव डाउनलोड के लिए एक कमांड लाइन उपयोगिता है। आप इसे http://gnuwin32.sourceforge.net/packages/wget.htm पर प्राप्त कर सकते हैं


3

यदि बिटसैडिन आपकी चाय का कप नहीं है, तो आप इस पॉवरशेल कमांड का उपयोग कर सकते हैं:

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

मुझे डाउनलोड .exe चाहिए और मैंने इस कोड का उपयोग भी किया है और काम नहीं किया है .. क्या मैं बैच स्क्रिप्ट का उपयोग कर .exe डाउनलोड कर सकता हूं?
दास। जॉन

3

चमगादड़ से छूटने के लिए चमगादड़ का उपयोग

करें एक बैच फ़ाइल बनाएँ और नीचे दिए गए कोड की तरह कुछ डालें

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

या

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

और इसे exe में परिवर्तित करें।


3

Wget के बजाय आप किसी विशेष URL से फ़ाइल डाउनलोड करने के लिए aria2 का उपयोग कर सकते हैं।

निम्नलिखित लिंक देखें जो aria2 के बारे में अधिक व्याख्या करेगा:

https://aria2.github.io/


इस उपकरण का उल्लेख करने के लिए +1 जो मुझे अभी तक नहीं पता था। बहुत बुरा यह HTTPS के साथ परेशानी है जैसे कि wget ने (अभी तक एक CA श्रृंखला को सेटअप करने का तरीका नहीं पाया है)
Jeroen Wiert Pluimers

2

BATCH ऐसा करने में सक्षम नहीं हो सकता है, लेकिन आप JScript या VBScript का उपयोग कर सकते हैं यदि आप उन टूल्स का उपयोग नहीं करना चाहते हैं जो डिफ़ॉल्ट रूप से विंडोज के साथ इंस्टॉल नहीं किए गए हैं।

इस पृष्ठ पर पहला उदाहरण VBScript में एक बाइनरी फ़ाइल डाउनलोड करता है: http://www.robvanderwoude.com/vbstech_internet_download.php

यह SO उत्तर JScript (IMO, बेहतर भाषा) का उपयोग करके एक फ़ाइल डाउनलोड करता है: Windows स्क्रिप्ट होस्ट (jscript): मैं बाइनरी फ़ाइल कैसे डाउनलोड करूं?

आपकी बैच स्क्रिप्ट तब फ़ाइल को डाउनलोड करने वाले JScript या VBScript को कॉल कर सकती है।


2

यह काम मैं एक खेल सर्वर परियोजना के लिए निम्नलिखित किया जाना चाहिए। यह ज़िप को डाउनलोड करेगा और इसे आपके द्वारा निर्दिष्ट की गई निर्देशिका में निकालेगा।

Name.bat या 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

मूल: https://github.com/C0nw0nk/SteamCMD-AutoUpdate-Any-Gameserver/blob/master/steam.cmd


मुझे डाउनलोड .exe चाहिए और मैंने इस कोड का उपयोग किया है और काम नहीं किया है .. क्या मैं बैच स्क्रिप्ट का उपयोग करते हुए .exe डाउनलोड कर सकता हूं?
दास। जॉन

1

मुझे यह VB स्क्रिप्ट मिली:

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

एक जादू की तरह काम करता है। एक बहुत ही साधारण फ़ंक्शन कॉल के साथ एक फ़ंक्शन के रूप में कॉन्फ़िगर किया गया:

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

मूल रूप से: http://www.ericphelps.com/scripting/samples/BinaryDownload/index.htm

यहाँ अतिरेक के लिए पूर्ण कोड है:

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

इस सवाल का यहाँ बहुत अच्छा जवाब है । मेरा कोड विशुद्ध रूप से कुछ संशोधनों के साथ उस उत्तर पर आधारित है।

नीचे स्निपेट को wget.bat के रूप में सहेजें और इसे अपने सिस्टम पथ में रखें (उदाहरण के लिए इसे किसी निर्देशिका में रखें और इसे सिस्टम पथ में जोड़ें।)

आप इसे अपने cli में निम्नानुसार उपयोग कर सकते हैं:

wget url/to/file [?custom_name]

जहां url_to_fileअनिवार्य है और custom_nameवैकल्पिक है

  1. यदि नाम प्रदान नहीं किया गया है, तो डाउनलोड की गई फ़ाइल को url से अपने नाम से बचाया जाएगा।
  2. यदि नाम की आपूर्ति की जाती है, तो फ़ाइल नए नाम से सहेजी जाएगी।

फ़ाइल यूआरएल और सहेजे गए फ़ाइल नाम एएनआई रंगीन पाठ में प्रदर्शित किए जाते हैं। यदि वह आपके लिए समस्या पैदा कर रहा है, तो इस गिटब परियोजना की जांच करें

@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 यह कोड आपको PowerShell स्थापित करने की आवश्यकता है।


1

आप एक निर्धारित कार्य को wget का उपयोग करके सेटअप कर सकते हैं, निर्धारित कार्य में "Run" फ़ील्ड का उपयोग करें:

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

1

विंडोज पर एक उपयोगिता (सीएमडी के साथ रहता है) जो सीएमडी से चलाया जा सकता है (यदि आपके पास लिखित पहुंच है):

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.

विंडोज एप्लिकेशन में निर्मित। बाहरी डाउनलोड की कोई आवश्यकता नहीं है।

विन 10 पर परीक्षण किया गया


-3

ftp का उपयोग करें:

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

अपनी स्थिति को फिट करने के लिए तारांकन में सब कुछ बदलें।


एफ़टीपी का समर्थन करने के लिए फ़ाइल की मेजबानी करने वाले सर्वर पर निश्चित रूप से निर्भर है।
PnP

क्वेस्टिन http से संबंधित है, न कि ftp
Ben
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.