विंडोज बैच स्क्रिप्ट में "@" का क्या अर्थ है


132

मैंने देखा @कि ऐसे संदर्भों में उपयोग किया जाता है:

@echo off

@echo start eclipse.exe

@यहाँ क्या मतलब है?

जवाबों:


197

इसका मतलब है कि संबंधित कमांड को आउटपुट नहीं करना। निम्नलिखित दो बैच फ़ाइलों की तुलना करें:

@echo foo

तथा

echo foo

पूर्व में केवल fooआउटपुट होते हैं जबकि बाद वाले प्रिंट होते हैं

H:\Stuff>echo foo 
foo

(यहाँ, कम से कम)। जैसा कि देखा जा सकता है कि जो कमांड चलाया जाता है वह दिखाई भी देता है।

echo offपूर्ण बैच फ़ाइल के लिए इसे बंद कर देगा। हालाँकि, echo offकॉल स्वयं अभी भी दिखाई देगा। यही कारण है कि आप @echo offबैच फ़ाइलों की शुरुआत में देखते हैं । कमांड गूंज बंद करें और इसे नहीं।

उस लाइन को हटाना (या उस पर टिप्पणी करना) अक्सर अधिक जटिल बैच फ़ाइलों में एक सहायक डिबगिंग टूल है क्योंकि आप देख सकते हैं कि त्रुटि संदेश से पहले क्या चलाया जाता है।


25

इसका मतलब है "मानक आउटपुट के लिए कमांड गूंज नहीं"।

बल्कि अजीब तरह से,

echo off

echo offउत्पादन के लिए भेज देंगे ! इसलिए,

@echo off

इस स्वचालित इको व्यवहार को बंद कर देता है - और भविष्य के सभी कमांड के लिए भी इसे रोकता है।

स्रोत: http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/batch.mspx?mfr=true


14

@अक्षम है कि एक आदेश के लिए गूंज। इसके बिना, echo start eclipse.exeलाइन दोनों का इरादा मुद्रित होगा start eclipse.exe औरecho start eclipse.exe लाइन।

echo offबारी-बारी से दर-डिफ़ॉल्ट आदेश गूंज बंद।

तो @echo offचुपचाप कमांड गूंज बंद हो जाती है, और केवल बैच लेखक को लिखने के लिए आउटपुट आउटपुट वास्तव में लिखा जाता है।


11

यह DOS से अर्थ प्राप्त करता है। @ :

डॉस संस्करण 3.3 और बाद में, एक बैच कमांड की गूंज को छुपाता है। कमांड द्वारा उत्पन्न कोई भी आउटपुट प्रतिध्वनित होता है।

इसके बिना, आप कमांड का उपयोग करते हुए कमांड इको को बंद कर सकते हैं echo off, लेकिन वह कमांड पहले ही गूंज जाएगा।


लिंक अब टूट गया है
ojchase

8

डिफ़ॉल्ट रूप से, एक बैच फ़ाइल अपने कमांड को प्रदर्शित करेगी क्योंकि यह चलता है। इस पहले कमांड का उद्देश्य जो @echo ऑफ है, इस डिस्प्ले को बंद करना है। "इको ऑफ़" कमांड को छोड़कर कमांड "इको ऑफ़" पूरी स्क्रिप्ट के लिए डिस्प्ले को बंद कर देता है। "साइन इन" @ "सामने" के रूप में अच्छी तरह से आदेश खुद पर लागू होता है।


3
मैं आपकी पोस्ट में कोई और बेहतर या बेहतर जानकारी नहीं देख सकता, जैसे अन्य 5 साल पुरानी पोस्ट्स में।
जेब

5

शामिल करने के लिए एक और उपयोगी समय @ है जब आप FORकमांड लाइन में उपयोग करते हैं । उदाहरण के लिए:

FOR %F IN (*.*) DO ECHO %F

हर फ़ाइल के लिए पिछला लाइन शो : कमांड प्रॉम्प्ट, ECHOकमांड और कमांड का परिणाम ECHO। इस तरफ:

FOR %F IN (*.*) DO @ECHO %F

बस ECHOकमांड का परिणाम दिखाया गया है।


@PychoData: यह मजेदार है कि आपने केवल एक ही उत्तर को अस्वीकृत कर दिया है, जो अन्य 4 उत्तरों के लिए एक उपयोगी जानकारी प्रदान करता है, जबकि, तब तक, पहले से ही उसी तरह से प्रश्न का उत्तर दिया ...
Aacini

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

2

आप @ को 'scriptBlock' में इस तरह शामिल कर सकते हैं:

@(
  echo don't echoed
  hostname
)
echo echoed

और विशेष रूप से ऐसा नहीं है :)

for %%a in ("@") do %%~aecho %%~a
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.