बैच फ़ाइल या कमांड प्रॉम्प्ट में "<<" का उपयोग कैसे करें?


13

मुझे पता है कि इसके लिए क्या >>उपयोग किया जाता है, यह स्क्रीन के बजाय एक फ़ाइल में सभी संदेश लिखता है। और मुझे लगता <<है कि मैं उल्टा करता हूं, मैं यह कोशिश करता हूं और एक संदेश प्राप्त करता हूं:<< was unexpected at this time.

कृपया मुझे बताएं कि क्या <<उपयोग किया जाता है और कैसे उपयोग किया जाता है।

जवाबों:


17

मानक Windows कमांड खोल - cmd.exe- का उपयोग नहीं करता <<ऑपरेटर बिल्कुल

एक एकल का <अर्थ है "फ़ाइल को मानक इनपुट में पढ़ें " cmd.exe, लेकिन <बैक-टू-बैक दो अक्षर अर्थहीन हैं cmd.exe, इसलिए यह आपको मिली त्रुटि देता है।

<<ऑपरेटर है के सभी प्रमुख प्रकार के लिए सार्थक यूनिक्स आदेश खोल , जहां इसके लिए प्रयोग किया जाता है यहाँ-दस्तावेज : ²

$ some-command <<END
blah blah blah
blah blah
blah blah blah blah blah
END

वे तीन लाइनें some-commandइसके मानक इनपुट पर भेजी जाती हैं ।

यह बहुत से पाठ को कमांड में भेजने के लिए उपयोगी है, इसे पहले किसी फाइल पर लिखे बिना, जैसा कि आप <ऑपरेटर के पास होगा। मैं अक्सर स्क्रिप्ट में "उपयोग" संदेश को एम्बेड करने के लिए इसका उपयोग करता हूं:

#!/bin/sh
if [ -z "$1" ]
then
    cat <<USAGE
usage: myscript <files...>

     Grobbles the foobie for all files given on the command line.

USAGE

    exit 1
fi

# ... do something with command line arguments

यह echoकथनों का एक गुच्छा लिखने से बेहतर है क्योंकि हर्डोक पाठ को बिल्कुल स्क्रीन की तरह प्रिंट किया जाता है। इसके अतिरिक्त, इस संदर्भ में श्वेत स्थान, उद्धरण, पुनर्निर्देशन, और चर प्रक्षेप से निपटना आसान है। सूचना, उदाहरण के लिए, कि मैंने उपयोग संदेश में कोण कोष्ठक का उपयोग किया है, ताकि शेल को आई / ओ पुनर्निर्देशन के लिए उपयोग करने से रोकने के लिए कुछ भी चालाक न हो।

यदि आप विंडोज पर इस तरह की चीजें करना चाहते हैं, तो आप सिगविन स्थापित कर सकते हैं और इसके एक गोले का उपयोग कर सकते हैं। यदि आप विंडोज 10 पर हैं, तो आप इसकी जगह WSL का उपयोग कर सकते हैं ।


फुटनोट:

  1. यह लिंक संग्रहीत Windows XP प्रलेखन ट्री में जाता है। Microsoft ने उस लिंक को तोड़ दिया जिसका मैं पहले उपयोग कर रहा था जब उन्होंने इन डॉक्स को संग्रहीत किया, इसलिए यदि वे इसे फिर से तोड़ते हैं, तो यहां एक बैकअप थर्ड-पार्टी संदर्भ है।

    केवल अन्य cmd.exeसंदर्भ सामग्री जो मुझे microsoft.com पर पता है, वह विंडोज कमांड पीडीएफ (4.9 एमबी, 948 पृष्ठ) है, जो बिल्ट-इन और माइक्रोसॉफ्ट द्वारा प्रदान किए गए बाहरी कमांड के अधिकांश (!) के लिए एक संदर्भ प्रदान करने की तुलना में थोड़ा अधिक है! आप cmdप्रॉम्प्ट पर दे सकते हैं । यह पीडीएफ दो आधारों पर अपूर्ण है। सबसे पहले, और यहां सबसे अधिक प्रासंगिक, इस बात की कोई संयुक्त चर्चा नहीं है कि cmd.exeशेल में पुनर्निर्देशन कैसे काम करता है ; शेल व्याकरण की चर्चा भी नहीं है। दूसरा, पीडीएफ की कमांड सूची अधूरी है: पहली चीज जो मैंने जांच की थी वह कवर नहीं की गई है diskpart:।

    मेरा मानना ​​है कि यह सब Microsoft के PowerShell केcmd.exe साथ बदलने के स्पष्ट प्रयासों का अनुसरण करता है , जो अब कई वर्षों से चल रहे हैं। इस लेखन के रूप में सबसे हाल ही में विंडोज 10 अपडेट में, उन्होंने अस्तित्व को छिपाने के लिए और कदम उठाए हैं , हालांकि यह पूरी तरह से अभी तक नहीं गया है।cmd.exe

    यह ध्यान देने योग्य है कि पावरशेल भी <<पुनर्निर्देशन ऑपरेटर का समर्थन नहीं करता है । न ही - यूनिक्स के गोले से एक दुखद प्रतिगमन में और cmd.exeक्या यह <पुनर्निर्देशन का समर्थन करता है !

  2. यहाँ दस्तावेज़ शुरू करने के लिए विहित तरीका है जैसा कि मैंने इसे ऊपर लिखा है, जिसमें <<और सीमांकक शब्द के बीच कोई स्थान नहीं है । मेरी फजी याद यह है कि शेल स्क्रिप्ट्स में मैंने यहां देखे गए दस्तावेजों के सभी उपयोग इस तरह से किए हैं। यहां के दस्तावेज़ों के लिए POSIX विनिर्देश अपने उदाहरणों में इस शैली का उपयोग करता है।

    हालाँकि, POSIX.1-2008 विनिर्देश के अन्य भागों का सावधानीपूर्वक पढ़ने से पता चलता है कि यह <<और सीमांकक शब्द के बीच कुछ स्थान या टैब वर्ण डालना कानूनी है । विशेष रूप से, देखने के टोकन मान्यता नियम 7 और 10 , की परिभाषा io_hereमें खोल व्याकरण , और की परिभाषा "रिक्त" चरित्र वर्ग

    यह है कि आप एक शेल का दस्तावेज कैसे बनाते हैं। नोट्स लें, Microsoft। ;)

    यहां बैश 4 पर परीक्षण किया गया है और ksh93पुष्टि करता है कि यह उम्मीद के मुताबिक काम करता है।


खुद मैने इससे बेहतर नहीं कहा होता। सिवाय मैंने साइग्विन का उल्लेख नहीं किया होगा क्योंकि आपके द्वारा विंडोज में किए गए कुछ काम हैं और अन्य आप यूनिक्स के साथ करते हैं। बहुत अधिक क्रॉस कम्पैटिबिलिटी है हाँ, हालाँकि मैं दृढ़ता से सिर्फ कुछ यूनिक कार्यों जैसे साइगविन या कई अन्य विन आधारित उपयोगिताओं के बजाय कच्चे यूनिक्स सीखने का सुझाव दूंगा।
बायटीनरी

8
@BiTinerary: यह देखते हुए कि बड़ी संख्या में लोग प्रतिदिन विशेष रूप से विंडोज पर यूनिक्स जैसी चीजों को करने में सक्षम होने के लिए साइगविन का उपयोग करते हैं, मुझे लगता है कि मैं जवाब में उस संकेत को छोड़ दूंगा।
वॉरेन यंग

हाँ, मेरा मतलब यह नहीं है कि साइगविन की प्रामाणिकता पर बहस करना, नरक मैं इसे अब और फिर सांसारिक कार्यों के लिए उपयोग करता हूं। मैं बस अपने दो सेंट में डाल रहा हूं जो वास्तविक चीज़ को बूट कर रहा है और यह सीख रहा है कि (विशेषकर शुरुआती के लिए) 3 जी पार्टी सीखने या मूल से स्पिन करने से बेहतर है जिसे पूरी तरह से अलग ओएस के अनुरूप होना चाहिए। मेरे कहने का मतलब यह है कि Cygwin को सेटअप करने में जितना समय लगता है, सभी शामिल किए गए मॉड्यूल को निर्दिष्ट करें + इसका उपयोग शुरू करें, आप वास्तविक चीज़ में बहुत कुछ सीख सकते थे। मुझे लगता है कि
साइगविन ने

नाइट: (यूनिक्स) हेरेडोक पुनर्निर्देशन और पाइप को नहीं पहचानता है, लेकिन डिफ़ॉल्ट रूप से पैरामीटर / चर प्रतिस्थापन और प्रक्रिया प्रतिस्थापन (दोनों डॉलर-पैरेंस और बैकटिक्स सिंटैक्स) को पहचानता है; उन लोगों को दबाने के लिए कमांड लाइन पर सीमांकक शब्द या डेटा (उद्धरण में कम से कम एक चार्ट) का उपयोग करें।
dave_thompson_085 10'18


4

> एक नई फ़ाइल के लिए लिखता है।

>> एक फ़ाइल में जोड़ता है

< एक फ़ाइल से पढ़ता है

| दूसरे कमांड के इनपुट में कमांड आउटपुट भेजता है

एक सूची के लिए यहाँ देखें % ^ cmd.exe में टाइप कर रहा है Windows ईस्टर अंडा?

चूंकि यह पोस्ट किया गया था इसलिए इसे जोड़ा गया है।

Starting a Program
===============

See start /? and call /? for help on all three ways.

Specify a program name
--------------------------------

    c:\windows\notepad.exe

In a batch file the batch will wait for the program to exit. When
typed the command prompt does not wait for graphical
programs to exit.

If the program is a batch file control is transferred and the rest of the calling batch file is not executed.

Use Start command
--------------------------

    start "" c:\windows\notepad.exe

Start starts a program and does not wait. Console programs start in a new window. Using the /b switch forces console programs into the same window, which negates the main purpose of Start.

Start uses the Windows graphical shell - same as typing in WinKey + R (Run dialog). Try 

    start shell:cache

Use Call command
-------------------------

Call is used to start batch files and wait for them to exit and continue the current batch file.
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.