ব্যাচ - এইচটিএমএল ডকুমেন্ট থেকে একটি ফাইলের url পান


0

আমি এই ফাইলটির সর্বশেষ সংস্করণটি ডাউনলোড করতে কার্ল ব্যবহার করতে চাই । সাইটের একটি রোবটস.টি.এস.টি. টি আছে, তবে আমার মনে হয় যা এটি কেবল curl -L -z WorldGuard.zip http://www.curse.com/server-mods/minecraft/worldguard/downloadএটির ব্যবহারের জন্য আমাকে থামিয়ে দিচ্ছে । http://addons.curse.cursecdn.com/files/684/741/worldguard-5.7.3.zipফাইলটির প্রত্যক্ষ লিঙ্ক রয়েছে যা পৃষ্ঠার এইচটিএমএল উত্স কোডে অবস্থিত এবং আমি এই লিঙ্কটিটি কার্ল করতে ব্যবহার করতে পারি কারণ এই লিঙ্কটি পার্মালিঙ্ক নয়, প্রথম লিঙ্ক থেকে এই urlটি পাওয়ার জন্য আমাকে একটি উপায় খুঁজে বের করতে হবে (যা পারমিলিংক)।

যদি আমি ব্যবহার curl -L http://www.curse.com/server-mods/minecraft/worldguard/downloadআমি দিয়ে শেষ এই আউটপুট। আমি ব্যবহারের চেষ্টা করেছি FOR /F "skip=628 tokens=10,11,12,13,14 delims=/ " %%a in ('curl -L http://www.curse.com/server-mods/minecraft/worldguard/download') DO curl -z foo.zip %%a')তবে আমি দেখতে পাচ্ছি যে আমি কয়টি লাইন এড়িয়ে যেতে পারি (31 এর টোকেন সীমা সমান) এর সীমা রয়েছে এবং সম্ভবত এটি পরে আমার সমস্ত লাইনও দিয়েছে (আমি যা চাই তা নয়)।

এরপরে, আমি একটি পাঠ্য ফাইলে আউটপুট সংরক্ষণ করার চেষ্টা করেছি এবং আমি চাইলে সমস্ত লাইন মুছে ফেলার চেষ্টা করেছি, তবে, আমি জানি না যে কীভাবে একটি নির্দিষ্ট স্ট্রিং নেই সেগুলি কীভাবে মুছতে হয়। আমি কেবলমাত্র এমন রেখাগুলিগুলিতে ফোকাস করার কথা ভাবছিলাম "http://addons.curse.cursecdn.com/files/"(অন্য কথায়, আমি যে ইউআরএলটি চেয়েছিলাম এমন লাইনটি ছিল) তবে কীভাবে করব তা আমার কোনও ধারণা নেই।

আমি কীভাবে কেবল url (বা যে অংশটি পরিবর্তিত হয় 684/741/worldguard-5.7.3.zip:) পেতে পারি এবং তাই এটি ডাউনলোড করতে কার্ল পেতে পারি?

সম্পাদনা: কোনও ব্যাচের স্ক্রিপ্টে এবং / বা কার্ল ব্যবহারের সহজ উপায় না থাকলে আমি বিকল্পগুলির জন্য উন্মুক্ত। আমি ভিজ্যুয়াল বেসিক (.vbs।), পাওয়ারশেল বা ব্যাচ ফাইল থেকে নির্বাহ করা যেতে পারে এমন কিছু (যা প্রায় সব কিছু হওয়া উচিত) ব্যবহার করে এমন উত্তরগুলি মানতে আমি প্রস্তুত am আমি এখনও এটিকে ধারাবাহিকভাবে রাখতে এবং একটি ফাইলে ব্যাচ এবং কার্ল ব্যবহার করতে পছন্দ করব এবং কারণ আমার কাছে ব্যাচের মধ্যে যা চাই তার 90% আমার আছে। এছাড়াও, আমি ব্যাচ নয় এমন জিনিসের সাথে তেমন পরিচিত নই তাই আপনি যদি স্ক্রিপ্টটি করেন তবে আপনি যদি তা ব্যাখ্যা করেন তবে আমি এটিকে পছন্দ করব।


পাওয়ারশেল শিখুন। এটি উইন 7 এর সাথে ডিফল্টরূপে আসে এবং এতে আরও কার্যকর কার্যকারিতা থাকে (অন্যান্য। নেট ভাষার কাছাকাছি)।
মাধ্যাকর্ষণ

@ গ্র্যাটিটি আমি অন্যান্য বিকল্পগুলি ব্যবহার করতে ইচ্ছুক (আমি এটি সম্পাদন করতে প্রশ্নটি সম্পাদনা করেছি)। আপনি যদি এটি করতে জানেন তবে স্ক্রিপ্টটি নির্দ্বিধায় পোস্ট করুন। আমি সম্পাদনায় যেমন বলেছি, প্রতিটি অংশ কী করে সংক্ষেপে ব্যাখ্যা করে দিলে আমি এটিকে পছন্দ করব।
ক্র্যাফট 1 এন

উত্তর:


0

নীচের কমান্ডগুলি .htm ফাইলে ডাউনলোড লিঙ্কযুক্ত লাইনটি সন্ধান করবে এবং সেই লাইনটি থেকে URL টি বের করার জন্য দ্রুত এবং নোংরা পদ্ধতি ব্যবহার করবে। এটি খুব মজবুত নয়, তবে যতক্ষণ 'আপনার ডাউনলোড এখানে ক্লিক না করা শুরু করুন' লাইনের জন্য এইচটিএমএল ব্যবহার করা উচিত ততক্ষণ তা কার্যকরভাবে পরিবর্তন করা যায় না।

for /F "tokens=4 delims==" %i in ('findstr download-link source.htm') do 
    @set match=%i
set zipurl=%match:~1,-7%
echo %zipurl%|findstr /R ^http://.*\.zip$

'শ্রেণি = "ডাউনলোড লিঙ্ক" "বৈশিষ্ট্যটি। জিপ ফাইলটিতে লিঙ্কযুক্ত ট্যাগটি প্রকাশ করে। ডিলিমিটার হিসাবে সমান চিহ্নটি ব্যবহার করে, সামনের টোকেনটি হবে "http://addons.[...].zip" class। আশেপাশের উক্তি এবং 'শ্রেণি' শব্দটি থেকে মুক্তি পাওয়ার জন্য একটি স্ট্রিং স্ট্রোডে %match%সংরক্ষণ করা হয় %zipurl%। তৃতীয় লাইনটি কিছুটা alচ্ছিক, তবে স্ক্রিপ্টটি এখনও কাজ করে কিনা তা যাচাই করতে ব্যবহার করা যেতে পারে। %errorlevel%যদি এক্সট্রাক্ট URL টি 'http: //' দিয়ে শুরু হয় এবং '.zip' এ শেষ হয় এবং অন্যথায় সেট করে তবে ফাইন্ডস্টার শূন্যে সেট করুন ।

একটি ব্যাচ ফাইলে ব্যবহারের জন্য, প্রতিস্থাপন %iসঙ্গে %%i


পুরোপুরি কাজ করে! আমি এটা সামান্য tweaked করেছি যাতে এটি একটি টেক্সট ফাইলে কিছু সংরক্ষণ করতে আমাকে প্রয়োজন হয় না: for /F "tokens=4 delims==" %%i in ('curl -L http://www.curse.com/server-mods/minecraft/worldguard/download ^| findstr download-link') do @set url=%%iএই হবে যে লাইন 776 অত্যন্ত দীর্ঘ বলার অপেক্ষা রাখে না একটি ত্রুটি দিতে, কিন্তু এটা প্রভাবিত করা উচিত নয় আমি কি করতে চান। এটা কতটা সংক্ষিপ্ত এবং সহজ পাগল!
ক্র্যাফট 1 এন

0

... তবে, আমি জানি না যে কীভাবে একটি নির্দিষ্ট স্ট্রিং না থাকা লাইনগুলি মুছতে হয় ...

কোনও নির্দিষ্ট স্ট্রিং না থাকা লাইনগুলি মুছতে , এই পোস্টটি কোনও শব্দ না থাকা স্ট্রিংয়ের সাথে মেলে নিয়মিত অভিব্যক্তিটি দেখুন

পোস্টে আরও তথ্য রয়েছে এবং অন্যান্য বিভিন্ন উত্তর সরবরাহ করা হয়েছে তবে এই উত্তরের মূল বিষয়গুলি হল:

আপনি ফাইলের লাইনগুলি ফিল্টার করতে sedএবং grep(বা sedএবং find) এর সংমিশ্রণটি ব্যবহার করতে পারেন ।

  1. যে কোনও পাঠ্য রয়েছে এমন প্রতিটি লাইনের শুরুতে একটি অনন্য "ট্যাগ" যুক্ত করতে পুরো ফাইলটি অনুসন্ধান / প্রতিস্থাপন করুন ।
  2. সব লাইন যেটা ধারণ করে লক্ষ্য স্ট্রিং, লাইন শুরু থেকে অনন্য "ট্যাগ" মুছে ফেলুন।
  3. এই মুহুর্তে, সমস্ত লাইন যা অনন্য "ট্যাগ" দিয়ে শুরু হয়, লক্ষ্য স্ট্রিংটি ধারণ করে না । আপনি এখন কেবল সেই লাইনেই (বা "অন্য কিছু" করতে পারেন )।delete

আমি এটি একবার দেখেছি এবং .bat ফাইলে এটি কীভাবে করা যায় তা সম্পর্কে আমি নিশ্চিত নই। এরপরে কয়েকটি পদক্ষেপ যা আমি মনে করি না সাধারণ কমান্ড হিসাবে করা যেতে পারে।
ক্র্যাফট 1 এন

@ Craft1n3ss - আমার অন্যান্য জবাব (দেখুন superuser.com/a/588845/144147 একটি ব্যাচ ফাইল URL টি বের করে আনতে জন্য)।
কেভিন ফেগান

0

ব্যবহার করে আপনি কয়েক কম পদক্ষেপে এই কাজ করতে পারে sedএবং grepকিন্তু এখানে একটি সমাধান শুধুমাত্র builtin কমান্ড ব্যবহার করে।

@echo off

rem    edit next line to include your filename    
set "zzfilename=captured-page.html"

rem    get the target line
type "%zzfilename%"|find /i "data-href"|find /i ".zip">"zztarget.txt"
for /f "usebackq delims=" %%f in (`type "zztarget.txt"`) do set zzaaa=%%f

rem    change double-quotes to single-quotes
set "zzaaa1=%zzaaa:"='%"

rem    remove unneeded text from the beginning of the line
set "zzaaa2=%zzaaa1:*data-href=gotit%"

rem    remove the "<" and ">" characters
set "zzaaa3=%zzaaa2:<='%"
set "zzaaa4=%zzaaa3:>='%"

rem    from what remains, take only the desired URL
for /f "usebackq tokens=2 delims='" %%f in (`echo %zzaaa4%`) do set "zzgotit=%%f"

rem    show the work and cleanup
set zz
set "zzaaa="
set "zzaaa1="
set "zzaaa2="
set "zzaaa3="
set "zzaaa4="
del "zztarget.txt">nul 2>&1

সম্পূর্ণ URL টি ভেরিয়েবলের মধ্যে থাকবে zzgotit

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.