2009-06-15 11 views
41

मैं एक व्यापक रूप से संगत विंडोज बैच स्क्रिप्ट में इस /bin/sh वाक्य रचना कन्वर्ट करने के लिए करना चाहते हैं:एक .bat फ़ाइल में एक चर में होस्टनाम को कैसे संग्रहीत करें?

host=`hostname` 
echo ${host} 

यह करने के लिए कैसे इतना है कि यह किसी भी विंडोज विस्टा, विंडोज एक्सपी, विंडोज 2000 और मशीन पर काम करेंगे?

स्पष्टीकरण के लिए: मैं प्रोग्राम में आगे बढ़ना चाहूंगा और मेजबाननाम का उपयोग वैरिएबल host में संग्रहीत के रूप में करना चाहूंगा। दूसरे शब्दों में, कार्यक्रम का बड़ा लक्ष्य मेजबाननाम को प्रतिबिंबित नहीं करना है।

उत्तर

49

मैं आमतौर पर FOR कमांड का उपयोग करके चर के लिए कमांड आउटपुट पढ़ता हूं क्योंकि यह अस्थायी फ़ाइलों को बनाने के लिए सहेजता है। उदाहरण के लिए:

FOR /F "usebackq" %i IN (`hostname`) DO SET MYVAR=%i 

ध्यान दें, ऊपर बयान कमांड लाइन पर लेकिन एक बैच फ़ाइल में नहीं काम करेंगे। बैच फ़ाइल में उसका उपयोग करने से बचने के FOR बयान में % उन्हें दो बार डाल कर:

FOR /F "usebackq" %%i IN (`hostname`) DO SET MYVAR=%%i 
ECHO %MYVAR% 

नहीं है एक बहुत अधिक आप FOR के साथ क्या कर सकते हैं। अधिक जानकारी के लिए बस कमांड प्रॉम्प्ट पर HELP FOR टाइप करें।

+0

बहुत अच्छा है, हालांकि लूप निर्माण के लिए आईएमओ भारी अधिभारित है। इसका उपयोग करने के लिए स्विच करेंगे। धन्यवाद! –

+1

आप सही हैं - मूल रूप से बैच स्क्रिप्ट के स्विस-सेना चाकू है जिसमें आप अधिकतर समस्याओं को हल करने के लिए इसका उपयोग कर समाप्त करते हैं। –

+0

यदि आप असाइनमेंट को दोहराना चाहते हैं (इस उदाहरण के लिए यह समझ में नहीं आता है, क्योंकि आप केवल एक बार होस्ट नाम को क्वेरी में पूछेंगे) तो 'SETLOCAL ENABLEDELAYEDEXPANSION' का उपयोग करना न भूलें (' सहायता SETLOCAL' देखें) और '% MYVAR%' –

44

हम्म - ऐसा कुछ?

set host=%COMPUTERNAME% 
echo %host% 

संपादित: घबराना के जवाब को विस्तृत करना और this question के जवाब में एक तकनीक का उपयोग कर एक कमांड लाइन अनुप्रयोग चलाने का परिणाम के साथ एक वातावरण चर सेट करने के लिए:

@echo off 
hostname.exe > __t.tmp 
set /p host=<__t.tmp 
del __t.tmp 
echo %host% 

या तो मामले में, 'होस्ट' को पर्यावरण चर के रूप में बनाया गया है।

+0

कि काम करता है - धन्यवाद –

1

बस लाइन

hostname 
उस में

के साथ एक .bat फ़ाइल बनाएँ। बस। विंडोज होस्टनाम कमांड का भी समर्थन करता है।

+1

माफ करना, मैं और अधिक स्पष्ट किया जाना चाहिए था। वैरिएबल में संग्रहीत मान का उपयोग करना चाहता था, बस इसे गूंज नहीं। –

6

क्यों नहीं तो ?:

set host=%COMPUTERNAME% 
echo %host% 
10

मैं वातावरण चर COMPUTERNAME उपयोग कर रहा हूँ:

copy "C:\Program Files\Windows Resource Kits\Tools\" %SYSTEMROOT%\system32 
srvcheck \\%COMPUTERNAME% > c:\shares.txt 
echo %COMPUTERNAME% 
संबंधित मुद्दे