विंडोज बैच (CMD) कोड गोल्फिंग के लिए शायद सबसे कम उपयुक्त भाषा है।
न्यूलाइन वर्णों से बचें । यदि आप बाइट्स में सबसे छोटे कोड की तलाश कर रहे हैं, जैसा कि वर्णों के विपरीत है, तो आप सभी अनावश्यक कैरिज रिटर्न (newline characters = 2 बाइट्स) से छुटकारा पाना चाहेंगे। आप ऐसा करने के लिए &
ऑपरेशन का उपयोग कर सकते हैं , प्रत्येक कमांड के लिए एक बाइट को ट्रिम कर सकते हैं ।
echo Hello&echo World.
चर सेट करना । स्विच का उपयोग करते हुए चर सेट करते समय, set
पार्सर रिक्त स्थान की अनदेखी करेगा।
set /a a+=1
set /p b="User Input: "
:: Will be handled the same as..
set/aa+=1
set/pb="User Input: "
ध्यान दें कि समान कमांडर नियम सभी आदेशों पर लागू नहीं होते हैं - उदाहरण के लिए, लूप के लिए रिक्त स्थान की आवश्यकता होती है। set, string, or command
(यानी कोष्ठक के अंदर क्या है) और शब्द को छोड़कर do
।
for /f %%a in (file.txt)do ...
सरल गणितीय अभिव्यक्ति । इसके अलावा, उस अभिव्यक्ति पर ध्यान दें जो मैंने set /a
कमांड में वेतन वृद्धि के लिए उपयोग किया था। सरल गणितीय अभिव्यक्तियों के लिए += -= *= /=
इसके बजाय (उदाहरण के लिए) का उपयोग करें set /a a=%a%+1
।
कमांड आउटपुट प्राप्त करना । कमांड का आउटपुट प्राप्त करने के लिए, कभी-कभी फ़ाइल से आउटपुट करना और पढ़ना उपयोगी हो सकता है, जहाँ आपने आउटपुट को इकट्ठा करने के लिए लूप के लिए उपयोग किया होगा:
for /f %%a in ('echo test') do set a=%%a
:: Can be shortened to
echo test>f&set/pa=<f
echo test
f, नामक फ़ाइल में स्टडआउट भेजें >f
, एक नई कमांड शुरू करें &
और एक चर में फ़ाइल की सामग्री प्राप्त करें set/pa=<f
। स्पष्ट रूप से यह हमेशा उपयोगी नहीं होता है। लेकिन यह तब हो सकता है जब आप सभी की जरूरत उत्पादन की एक पंक्ति है।
कमांड आउटपुट । कमांड आउटपुट को दबाते समय, कमांड @
से पहले का उपयोग करें , जब तक कि आपको 9 से अधिक कमांड को दबाने की आवश्यकता न हो , उस स्थिति में, @echo off
अपनी स्क्रिप्ट की शुरुआत में उपयोग करें। @echo off
9 बाइट्स लंबी है, और इसलिए आम तौर पर अधिक बाइट्स को लंबी स्क्रिप्ट के साथ सहेजा जाएगा।
कमांड अक्सर अधिक वही करते हैं जो स्पष्ट है - इस बारे में सोचें कि आपके आदेश क्या कर रहे हैं। उदाहरण के लिए; यदि आपको एक चर सेट करने की आवश्यकता है और इसके बजाय एक अन्य चर को प्रतिध्वनित करें:
set a=OUTPUT
echo %a%
echo test>f
set /p b=<f
आप अपने /p
लिए आउटपुट पर स्विच के साथ सेट कमांड का उपयोग कर सकते हैं %a%
।
set a=OUTPUT
echo test>f
set /p b=%a%<f
पूरी तरह से गोल्फ ...
set a=OUTPUT&echo test>f&set/pb=%a%<f
Expamples के एक जोड़े - गणना सभी अंकों का योग - Goldbach का अनुमान ।
किसी भी अन्य सुझावों की सराहना की तुलना में अधिक हैं - अगर मैं किसी और चीज के बारे में सोचता हूं तो मैं इसे अपडेट करता रहूंगा।