it-swarm.asia

كيفية تنزيل الملفات من سطر الأوامر في ويندوز مثل wget أو curl

كيف يمكنني تنزيل شيء ما من الويب مباشرة دون فتح Internet Explorer أو Firefox لبرنامج Acrobat Reader/Quicktime/MS Word/أيًا كان؟

أنا أستخدم Windows ، لذلك فإن إصدار Windows من Wget سيفعل.

324
Paolo Tedesco

Wget for Windows يجب أن تعمل.

من Wget Wiki FAQ :

يعد GNU Wget أداة مساعدة مجانية للشبكة لاسترداد الملفات من شبكة الويب العالمية باستخدام HTTP و FTP ، وهما بروتوكولا الإنترنت الأكثر استخدامًا على نطاق واسع. إنه يعمل بشكل غير تفاعلي ، مما يتيح العمل في الخلفية ، بعد تسجيل الخروج.

من هذا القسم من FAQ ، يُقترح روابط التنزيل:

ثنائيات ويندوز

يستخدم الارتباط مع Jernej Simončič من باب المجاملة بدلاً من ذلك.

171
Tony

بديل اكتشفته مؤخرًا باستخدام PowerShell:

$client = new-object System.Net.WebClient
$client.DownloadFile("http://www.xyz.net/file.txt","C:\tmp\file.txt")

إنه يعمل بشكل جيد مع استعلامات GET.

إذا كنت بحاجة إلى تحديد بيانات الاعتماد لتنزيل الملف ، أضف السطر التالي بين:

$client.Credentials =  Get-Credential                

ستظهر نافذة بيانات اعتماد Windows القياسية. سيتم استخدام بيانات الاعتماد التي تدخلها هناك لتنزيل الملف. ما عليك سوى القيام بذلك مرة واحدة طوال الوقت الذي ستستخدم فيه كائن العميل $.

296
Paolo Tedesco

إذا كان لديك PowerShell> = 3.0 ، فيمكنك استخدام Invoke-WebRequest

Invoke-WebRequest -OutFile index.html http://superuser.com

أو الغولف

iwr -outf index.html http://superuser.com

قم بتنزيل ملف عبر HTTP في Windows

76
Steven Penny

يحتوي Windows على أداة تنزيل سطر الأوامر الخاصة به - BITSAdmin :

BITSAdmin هي أداة سطر أوامر يمكنك استخدامها لإنشاء وظائف تحميل أو تحميل ومراقبة تقدمها.

EDIT: 26.01.15 - إليك نظرة عامة على كيفية تنزيل ملف على النوافذ دون أدوات خارجية

ومثال كامل bitsadmin:

bitsadmin /transfer myDownloadJob /download /priority normal http://downloadsrv/10mb.Zip c:\10mb.Zip

تحرير : 15.05.2018 - اتضح أنه من الممكن تنزيل ملف مع certutil أيضًا :

certutil.exe -urlcache -split -f "https://download.sysinternals.com/files/PSTools.Zip" pstools.Zip

لم يتم تثبيت Certutil افتراضيًا على XP/Win2003 ، ولكنه متوفر في إصدارات Windows الأحدث. ولأجل XP/2003 ، ستحتاج إلى حزمة أدوات الإدارة لخادم Windows 2003

52
npocmaka

احفظ النص التالي كـ wget.js وقم ببساطة بالاتصال

cscript /nologo wget.js http://example.com

هذا هو الكود:

var WinHttpReq = new ActiveXObject("WinHttp.WinHttpRequest.5.1");
WinHttpReq.Open("GET", WScript.Arguments(0), /*async=*/false);
WinHttpReq.Send();
WScript.Echo(WinHttpReq.ResponseText);

/* To save a binary file use this code instead of previous line
BinStream = new ActiveXObject("ADODB.Stream");
BinStream.Type = 1;
BinStream.Open();
BinStream.Write(WinHttpReq.ResponseBody);
BinStream.SaveToFile("out.bin");
*/
30
user190042

هناك حليقة أصيلة لنظام التشغيل Windows متوفرة هنا . هناك العديد من النكهات المتاحة مع وبدون دعم SSL.

لا تحتاج إلى الأمتعة الإضافية لـ Cygwin وما شابه ، ملف EXE صغير واحد فقط.


من المهم أيضًا معرفة وجود أسماء مستعارة wget و curl مضمنة في كافة الإصدارات الحديثة من Windows Powershell. هم متساوون.

لا توجد ملفات أو تنزيلات إضافية مطلوبة للحصول على وظيفة wget:

استخدام حليقة في بوويرشيل (المهوس مؤنس)

مقتطفات:

يمكنك كتابة أمر cURL مثل الأمر الذي يقوم بتنزيل ملف من مستودع GitHub.

حليقة http://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/mongodb-on-ubuntu/azuredeploy.json

ويبدو أنه يعمل ولكن ما تقوم به في الواقع هو استخدام cURL كاسم مستعار. في المثال أعلاه ، ما سيحدث هو أنك ستحصل فقط على الرؤوس بدلاً من الملف نفسه.

تتيح لك الأسماء المستعارة في PowerShell إنشاء اختصارات للأوامر الأطول بحيث لا تضطر إلى كتابتها طوال الوقت.

إذا قمت بكتابة أمر Get-Alias ​​، فستعطيك قائمة بجميع الأسماء المستعارة المستخدمة في PowerShell. كما ترون ، يستدعي الأمر curl الأمر Invoke-WebRequest. إنها متشابهة ولكن ليست متشابهة وهذا هو السبب في أن الطلب أعلاه لا يعمل لصالحنا.

 enter image description here

لجعل هذا يعمل بشكل صحيح في PowerShell ، أسهل طريقة هي استخدام المتغيرات والوسيطة -OutFile كما هو موضح هنا:

 enter image description here

(تم قطع اسم الملف في الصورة " https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/mongodb-on-ubuntu/azuredeploy.json ")

سيقوم بناء الجملة هذا بتنزيل المحتويات الكاملة للملف الهدف azuredeploy.json إلى الملف المحلي newfile.json


تتمثل الميزة الأساسية في أنها مضمنة في Powershell نفسها بحيث يتم تنفيذ هذا الرمز مباشرة بدون تنزيلات أو تكون هناك حاجة إلى أي عمليات إنشاء ملفات إضافية أخرى لجعلها تعمل على أي إصدار حديث من Windows.

20
Gaurav Kumar

قمت بعمل ملف myGet.bat سريع يستدعي طريقة PowerShell الموضحة أعلاه.

@Echo OFF
SetLocal EnableDelayedExpansion
Set Var=%1
Set Var=!Var:http://=!
Set Var=!Var:/=,!
Set Var=!Var:%%20=?!
Set Var=!Var: =?!
Call :LOOP !var!
Echo.Downloading: %1 to %~p0!FN!
powershell.exe -Command (new-object System.Net.WebClient).DownloadFile('%1','%~p0!FN!')
GoTo :EOF
:LOOP
If "%1"=="" GoTo :EOF
Set FN=%1
Set FN=!FN:?= !
Shift
GoTo :LOOP

لقد استعارت بعض الكود منتحليل عنوان URL لاسم الملف مع المسافة.

19
MartinC

كنت أبحث عن نفس الشيء ، ولأنه ليس لدي أي امتياز لتثبيت أي من الحزم المذكورة أعلاه ، فقد ذهبت إلى حل بديل صغير (لتنزيل 30 ملفًا):

  • أنا خلقت ملف دفعي
  • سرد جميع الملفات
  • ضع firefox.exe في بداية كل سطر
  • ذهبت إلى دليل فايرفوكس في Program Files
  • ركضها.
8
Jesse P Francis

Cygwin لديه Wget (والعديد من الأدوات المساعدة).

3
Rich Homolka

إذا كان PowerShell خيارًا ، فهذا هو المسار المفضل ، نظرًا لأنك (على الأرجح) لن تضطر إلى تثبيت أي شيء إضافي:

(new-object System.Net.WebClient).DownloadFile('http://www.xyz.net/file.txt', 'C:\tmp\file.tx??t')

الفشل في ذلك ، Wget for Windows ، كما أشار آخرون هو بالتأكيد الخيار الأفضل الثاني. كما تم نشره في إجابة أخرى ، يبدو أنه يمكنك تنزيل Wget جميعًا بمفرده ، أو يمكنك الاستيلاء عليها كجزء من Cygwin أو MSys .

إذا وجدت ، لسبب ما ، تجد نفسك عالقًا في فترة تشوه ، باستخدام جهاز لا يحتوي على PowerShell و ليس لديك أي وصول إلى متصفح ويب عامل (أي أن Internet Explorer هو المستعرض الوحيد على النظام ، وإعداداته تالفة) ، وملفك موجود على موقع FTP (على عكس HTTP):

start->run "FTP", press "OK".

إذا كانت الذاكرة موجودة هناك منذ نظام التشغيل Windows 98 ، ويمكنني أن أؤكد أنها لا تزال موجودة في نظام التشغيل Windows 8 RTM (قد تضطر للذهاب إلى appwiz.cpl وإضافة ميزات/إزالة للحصول عليها). يمكن لهذه الأداة المساعدة تنزيل الملفات وتحميلها من/إلى مواقع FTP على الويب. يمكن استخدامه أيضًا في البرامج النصية لأتمتة كلتا العمليتين.

كانت هذه الأداة المدمجة مدخرًا حقيقيًا بالنسبة لي في الماضي ، خاصة في أيام ftp.cdrom.com - لقد قمت بتنزيل Firefox بهذه الطريقة مرة واحدة ، على جهاز معطل تمامًا ولم يكن لديه سوى اتصال هاتفي بالإنترنت اتصال (مرة أخرى عندما كان الحد الأقصى لحجم حزمة sneakernet لا يزال 1.44 ميجابايت ، ولا يزال Firefox يسمى "Netscape" / me does trollface).

بعض النصائح: إنه معالج الأوامر الخاص به ، ويحتوي على بناء جملة خاص به. حاول كتابة "مساعدة". تتطلب جميع مواقع FTP اسم مستخدم وكلمة مرور ؛ ولكن إذا سمحوا لمستخدمين "مجهولين" ، فإن اسم المستخدم "مجهول" وكلمة المرور هي عنوان بريدك الإلكتروني (يمكنك إنشاء حساب إذا كنت لا تريد أن يتم تتبعك ، ولكن عادة ما يكون هناك نوع من المنطق للتأكد من أنه عنوان بريد إلكتروني صالح).

3
BrainSlugs83

و http://www.httrack.com/ لديه واجهة المستخدم الرسومية لطيفة (وهو مجاني) ، لعكس المواقع. كما أن لديها نسخة لينكس.

2
Zsolt Botykai

يمكنك أيضًا استخدام wget المعبأة في PowerShell . ؛ ^) لفتح ، اضغط على مفتاح Windows واكتب "powershell" أو Windows-R واكتب "powershell" وضرب العودة.

لا التثبيت ضروري.

اختلاف واحد مثير للاهتمام عن wget (أكثر في هذا الرابط ): لا يمكنك ببساطة استخدام أكبر من توجيه الإخراج إلى ملف. wget في PowerShell عبارة عن مجمّع ملائم لـ Invoke-WebRequest ، وتحتاج إلى استخدام بناء الجملة الخاص به للكتابة إلى ملف.

wget https://superuser.com/questions/25538 -OutFile rubySlippers.html
2
ruffin

يمكنك الحصول على WGet لنظام التشغيل Windows هنا . بدلاً من ذلك ، يمكنك النقر بزر الماوس الأيمن فوق رابط تنزيل العنصر الذي تريد تنزيله واختيار "حفظ باسم". سيؤدي هذا إلى تنزيل الملف وعدم فتحه في التطبيق المخصص.

1
BinaryMisfit

أعتقد أن تثبيت wget عبر Chocolatey هو أسهل طريقة.

  1. تثبيت الشوكولاته
  2. من سطر الأوامر ، اكتب: choco install wget
  3. يمكنك بعد ذلك استخدام wget من سطر الأوامر مثل أنظمة * nix.
0
sivabudh

إذا كنت تريد واجهة المستخدم الرسومية ، فحاول VisualWget ، والتي هي في الواقع نظيفة ، وميزة كاملة. يعتمد على GNU Wget لمحرك التنزيل الخاص به.

تحرير: رابط محدث.

0
Wurlitzer

كما هو موثق في هذا SU answer ، يمكنك استخدام ما يلي في Powershell:

Import-Module bitstransfer
start-bitstransfer -source http://something/something.ext -destination c:\something.ext
0
Dolan Antenucci