কেন এই multiline জন্য / ইন / করবেন একটি ব্যাচ কাজ করে না?


1

আমার বাচ্চাকে সবচেয়ে সাধারণ রং শিখতে সাহায্য করার জন্য, আমি এই ব্যাচটি তৈরি করেছি (এটি উইন্ডোজ 7 তবে আমি মনে করি এটি অন্য উইন্ডোজ সংস্করণে একই রকম):

@echo off
for %%a in (^
black ^
blue ^
green ^
gray ^
orange ^
pink ^
red ^
#82461F ^
#7E287E ^
white ^
yellow ^
) do ffplay -hide_banner -f lavfi -i color=%%a:160x90:d=3,format=rgb24 -fs

খুব সহজবোধ্য: দী for লুপ প্রতি রান ffplay একদা কমান্ড এক, আমার 16: 9 পর্দাটি একক রঙ দিয়ে পূরণ না হওয়া পর্যন্ত শিশুটি রঙকে স্বীকৃতি দেয় এবং এটির নাম ভাল করে দেয়; তারপর আমি প্রেস কুই যে উদাহরণ প্রস্থান করার জন্য ffplay এবং পরবর্তী রং প্রদর্শিত হয়।

আমি কমান্ডটি ভাঙ্গি যাতে শিখতে একটি নির্দিষ্ট ক্রম এড়াতে আমার লাইনের সাথে সহজেই লাইন মেশাতে লাইনের প্রতিটি রঙের মান থাকতে পারে।

কিন্তু এটা কাজ করে না। যদি আমি এই দুটি প্রশ্ন থেকে সঠিক পাই ...

... যেহেতু প্রতি ^<new line> চূড়ান্ত কমান্ড থেকে অদৃশ্য, আমার ব্যাচ কমান্ড লাইন ইন্টারপ্রেটার একক লাইন সমতুল্য হয় ...

for %a in (black blue green gray orange pink red saddlebrown violet white yellow ) do ffplay -hide_banner -f lavfi -i color=%a:160x90:d=3,format=rgb24 -fs

... যা বলা দরকার, পুরোপুরি কাজ করে।

এটা কাজ করে কি শেষ লাইন শুরু হয় একটি স্থান । কিন্তু, ব্যাচ কাজ করার উপায় খোঁজার সত্ত্বেও, প্রশ্নটি রয়ে যায়। কেন এটা প্রয়োজনীয় যে স্থান ? অথবা, আমি তালিকাভুক্ত প্রশ্নের উত্তর থেকে কি অনুপস্থিত?

সম্পাদনা:
# 82461F == কটা
# 7E287E == বেগুনি
আমার স্ত্রী এই দুই নাম্বার রং আমাদের প্রদর্শনের দিকে তাকিয়ে কিভাবে বিশ্বাস ছিল না।

সম্পাদনা:
রেফারেন্সের জন্য, চূড়ান্ত কাজকারী ব্যাচ (সবাইকে ধন্যবাদ), বর্ণমালার বর্ণমালা অনুসারে এবং অপ্রয়োজনীয় ক্যারেটগুলি এবং স্পেস ছাড়া:

@echo off
for %%a in (
black
blue
#82461F %= brown %
gray
green
orange
pink
red
#7E287E %= violet %
white
yellow
) do ffplay -hide_banner -f lavfi -i color=%%a:160x90:d=3,format=rgb24 -fs

আপনি কি স্পেস সঠিকভাবে উল্লেখ করা হয়?
DavidPostill

@ সিডিএলভিসিডিএলভি তুমি কেন জিজ্ঞেস করছো এই স্থান কেন? yellow ) যেমন প্রয়োজন বা অন্য কিছু স্থান? যে স্থান আসলে পরে প্রয়োজন হয় না yellow মূল্য এবং ঠিক আগে ) লুপ যে অংশ বন্ধনী। উপরন্তু, লোটিংস উত্তর অনুসারে, আপনি আসলে শুরু করতে পারেন black নিচে লাইন উপর for %%a in ( আপনি চেয়েছিলেন এবং এটি থাকার চেয়ে ঠিক সূক্ষ্ম উপায় কাজ করা উচিত for %%a in (black যে একই লাইন কিন্তু নিশ্চিত জন্য ক্যারেট প্রতীক পরিত্যাগ। আমি এখনও একটু বিভ্রান্ত কিন্তু সম্ভবত আপনার জন্য LotPings দ্বারা উত্তর জন্য সাহায্য বা যোগ করা হবে।
Pimp Juice IT

আমি প্রতিটি লাইনের শেষে স্থান যোগ করছিলাম কারণ আমি মনে করি বন্ধনীগুলির মধ্যে মানগুলি আলাদা করা প্রয়োজন ছিল (ঠিক যেমন আপনি একটি লাইনে কমান্ড লেখেন)। আমি যে জানি না for কমান্ডটি বিভিন্ন লাইনের মধ্যে বিভক্ত করা যেতে পারে (আমি W2K থেকে এটি ব্যবহার করি এবং এটি খুঁজে পাইনি)। তাই, আমি যা করছিলাম তা এক লাইনে বিভক্ত করতে ক্যারেট ব্যবহার করছিলাম for। আমি এমনকি শেষ মানতেও স্থানটি রাখি কারণ আমি পরে লাইনগুলি আলাদা করতে চেয়েছিলাম এবং আমি (ভুলভাবে) ভাবলাম এটি ব্যর্থ হবে।
cdlvcdlv

উত্তর:


1

আপনি সব লাইন ধারাবাহিক অক্ষর বাদ দিতে পারেন ^ তারা প্রয়োজন হয় না,
কিন্তু প্রথম লাইনের শুরুতে লাইনগুলি শুরু হওয়ার পর এই লাইনের প্রথম গৃহস্থালি থেকে পালিয়ে যাওয়ার অর্থ বুঝানো হয় - আপনি যা অনুমান করেছেন তা আমি অনুমান করি না।

যে অক্ষর জন্য ক্ষতি করে না, কিন্তু বন্ধ বন্ধনী escaping একটি ভিন্ন জিনিস।
নিম্নলিখিত ব্যাচ পরীক্ষার উদ্দেশ্যে শুধুমাত্র কমান্ড echo:

@echo off
for %%a in (black
blue
green
gray
orange
pink
red
#82461F
#7E287E
white
yellow) do echo ffplay -hide_banner -f lavfi -i color=%%a:160x90:d=3,format=rgb24 -fs

নমুনা আউটপুট:

ffplay -hide_banner -f lavfi -i color=black:160x90:d=3,format=rgb24 -fs
ffplay -hide_banner -f lavfi -i color=blue:160x90:d=3,format=rgb24 -fs
ffplay -hide_banner -f lavfi -i color=green:160x90:d=3,format=rgb24 -fs
ffplay -hide_banner -f lavfi -i color=gray:160x90:d=3,format=rgb24 -fs
ffplay -hide_banner -f lavfi -i color=orange:160x90:d=3,format=rgb24 -fs
ffplay -hide_banner -f lavfi -i color=pink:160x90:d=3,format=rgb24 -fs
ffplay -hide_banner -f lavfi -i color=red:160x90:d=3,format=rgb24 -fs
ffplay -hide_banner -f lavfi -i color=#82461F:160x90:d=3,format=rgb24 -fs
ffplay -hide_banner -f lavfi -i color=#7E287E:160x90:d=3,format=rgb24 -fs
ffplay -hide_banner -f lavfi -i color=white:160x90:d=3,format=rgb24 -fs
ffplay -hide_banner -f lavfi -i color=yellow:160x90:d=3,format=rgb24 -fs

আমি জানি না আপনাকে ক্যারেটের দরকার নেই, শব্দের মধ্যেও স্পেস নয় (নতুন লাইনগুলি যথেষ্ট)। এখন আপনি উল্লেখ করেন যে, আমি লক্ষ্য করেছি যে এক উত্তরে তারা বলে যে লাইনের শেষে ক্যারেটগুলি কেরেট এবং নতুন লাইন উভয়কে মুছে ফেলে এবং পরবর্তী চরিত্র থেকে পালিয়ে যায়। সুতরাং এই সমস্যা ছিল: যদি আপনি বন্ধ বন্ধনী থেকে পালিয়ে যান তবে এটি কমান্ডের মধ্যে তার অর্থ হারাবে এবং এটি সেমিক্যালে ব্যর্থ হবে। আকর্ষণীয় সঙ্গে, যথেষ্ট echo on ভুল সংস্করণে, আপনি দেখতে না কোন কমান্ড সব (আপনি ভুল কমান্ড এবং তারপরে ইন্টারপ্রেটারের অভিযোগ দেখতে আশা করবেন)।
cdlvcdlv
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.