আমি কীভাবে "ফর" কমান্ডটি পাইপ করব?


11

কমান্ডের জন্য আমি কীভাবে পাইপ করব। পরিবর্তে তাই

    C:\asd>ipconfig | findstr "Address" >a

   C:\asd>for /f "tokens=15" %f in (a) do @echo %f
   192.168.1.3

আমি এক লাইনে এটি করতে সক্ষম হতে চাই।

C:\asd>ipconfig | findstr "Address" | for /f "tokens=15" %f do @echo %f
do was unexpected at this time.

উত্তর:


22

যদিও এটি নথিভুক্ত হয়েছে বলে মনে হচ্ছে না, আপনি ফর কমান্ডের ভিতরে থাকা কমান্ডটি পাইপ করতে পারেন। আমি প্রথম এই উদাহরণ থেকে এটি সম্পর্কে জানতে :

SC query | FOR /F "tokens=2" %%i IN ('FIND /I "SERVICE_NAME"') DO @ECHO %%i

আপনার কোডের এই পরিবর্তিত সংস্করণটি কাজ করে:

C:\>ipconfig | for /f "tokens=14" %f in ('findstr "Address"') do @echo %f
192.168.x.x
192.168.y.y

একটি স্বেচ্ছাসেবক কমান্ড থেকে পাইপযুক্ত ইনপুট পার্স করার জন্য আপনি ফর কমান্ডের ভিতরে "আরও" ব্যবহার করতে পারেন, এই উত্তরে বর্ণিত হিসাবে :

C:\>ipconfig | findstr "Address" | for /f "tokens=14" %f in ('more') do @echo %f
192.168.x.x
192.168.y.y

10

for( এটি দেখার জন্য চালানো for /?) এর জন্য ডকুমেন্টেশনগুলি দেখে, আমি মনে করি না যে for /fপাইপ থেকে পড়বে read একমাত্র বৈধ উত্স ফাইল-সেট, "স্ট্রিং" এবং 'কমান্ড'।

FOR /F ["options"] %variable IN (file-set) DO command [command-parameters]
FOR /F ["options"] %variable IN ("string") DO command [command-parameters]
FOR /F ["options"] %variable IN ('command') DO command [command-parameters]

আপনি এইভাবে কমান্ডটি ভিতরে রাখতে forপারেন:

for /f "tokens=15" %f in ('ipconfig ^| findstr "Address"') do @echo %f

192.168.x.x
192.168.y.y

(নিউরোলাইসিসকে এটি নির্দেশ করার জন্য ধন্যবাদ এবং এটি ^|কেবল হওয়া উচিত |)

অথবা আপনি ipconfig | findstr "Address"একটি পৃথক ব্যাচের স্ক্রিপ্ট স্থাপন এবং কল করার চেষ্টা করতে পারেন :

for /f "tokens=14" %f in ('ipaddresses') do @echo %f

(ধরে নিলাম আপনাকে স্ক্রিপ্ট বলা হয়েছে ipaddresses)।

অথবা আপনি খুব forকাজটি করতে ব্যবহার করতে পারেন findstr, এটি:

for /f "tokens=2,14" %i in ('ipconfig') do @if %i==Address. @echo %j

192.168.x.x
192.168.y.y

এটি একেবারে সমান নয় কারণ এটি আইপিভি 6 অ্যাড্রেসের সাথে মেলে না, তবে এই লাইনের সাথে কিছু কাজ করতে পারে।

এছাড়াও মনে রাখবেন আমি পরিবর্তন tokens=15করতে tokens=14। আমি মনে করি লাইনের শেষ ক্ষেত্রটি টোকেন 14 any যাইহোক আমার পক্ষে কাজ করে।


আপনি যদি আমার প্রশ্নটির দিকে তাকান তবে আপনি দেখতে পাবেন যে আমি একটি টেম্পল ফাইল ব্যবহার সম্পর্কে জানতাম, এটি আমার উদাহরণ ছিল, আমি কেবল ফাইলটিকে 'এ' বলেছি। আপনি শুরুতে যা বলছেন তা দিয়ে, আপনার কাছে একটি বক্তব্য আছে, পাইপটি করার সবচেয়ে কাছেরটি .. "কমান্ড "টি কমান্ডটি দিচ্ছেন। এবং আমি মনে করি যেহেতু কেউ এটি করতে পারে তাই এটি ব্যাখ্যা করতে পারে যে কেন কেউ পাইপ ব্যবহার করতে পারে না। দেখে মনে হচ্ছে কেউ এটিতে পাইপ ব্যবহার করতে পারে না। ইন্টারেস্টিনে আপনি পাইপলাইন শব্দটিও উল্লেখ করেছেন .. আমি পাইপটি শুনি নি যে এটি বলা হয়েছিল .. তবে একটি গুগল এটি দেখায়।
বারলপ

4
রেকর্ডের জন্য, এটি "পাইপলাইন সমর্থন করে বলে মনে হচ্ছে না" এর কারণটি হ'ল এটি আপনি এড়ালেন না, এটি forপরিবর্তে পাইপিং করছে ipconfig। শুধু করুন for /f "tokens=15" %f in ('ipconfig ^| findstr "Address"') do @echo %f, যখন ^পালানোর চরিত্রটি হয়।
ম্যাথিউ কারটিয়ের

ধন্যবাদ নিউরোলিসিস, এটি অন্তর্ভুক্ত করার জন্য আমার উত্তর আপডেট করবে।
মাইকেল

ওয়েল আমি বোঝাতে চাইছিলাম এর আগে পাইপিং করা। তবে আমি নিশ্চিত যে কেউ পারেন না। মিকেলের পরামর্শ মতো "ইন" তেও পারেন। তবে মাইকেলের লাইনটি চেষ্টা করে, আমি মাইকেলের লাইন নিয়ে একটি সমস্যা তৈরি করেছিলাম .. এবং আপনি (নিউরোলিসিস) পাইপ থেকে বেরিয়ে এসে সমাধান করেছেন।
বারলোপ

@ বারলপ, হ্যাঁ, আমি টেম্পাইলের পরামর্শটি সরিয়ে দেব। "পাইপলাইন" হ'ল একটি UNIX শব্দ যার অর্থ মাঝখানে পাইপ সহ একাধিক কমান্ডের আদেশ।
মাইকেল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.