2012-08-25 3 views
5

मैं एक बैच फ़ाइल है कि इस तरह दिखता है में पाश के लिए एक है पाश बैच फ़ाइल के लिए एक:अंकगणित अंदर

for %%y in (100 200 300 400 500) do (
    set /a x = y/25  
    echo %x% 
) 

लाइन:

set /a x = y/25 

प्रतीत नहीं करता है किसी भी विभाजन कर रही करने के लिए । प्रत्येक वाई को 25 तक विभाजित करने के लिए सही वाक्यविन्यास क्या है? मुझे केवल इस विभाजन से पूर्णांक परिणाम की आवश्यकता है।

+0

डॉस में लूप और गणित की गणना क्षमता नहीं है। केवल विंडोज सीएमडी करता है। [वे पूरी तरह से अलग हैं] (http://superuser.com/q/451432/241386) –

उत्तर

10

एसईटी/ए कथन में उपयोग करने के लिए पर्यावरण चर को विस्तारित करने की आवश्यकता नहीं है। लेकिन चर के लिए विस्तार किया जाना चाहिए।

इसके अलावा, यदि आपकी गणना भी काम करती है, तो ईसीएचओ असफल हो जाएगा क्योंकि जब कोई बयान पार्स किया जाता है तो प्रतिशत विस्तार होता है, और पूरे निर्माण के लिए एक बार में पार्स किया जाता है। तो लूप निष्पादित होने से पहले% x% का मान वैल्यू होगा जैसा यह अस्तित्व में था। लूप के भीतर सेट किया गया मान प्राप्त करने के लिए आपको देरी से विस्तार का उपयोग करना चाहिए।

इसके अलावा, आपको असाइनमेंट ऑपरेटर से पहले स्थान को हटा देना चाहिए। आप नाम में एक स्थान के साथ एक चर घोषित कर रहे हैं।

@echo off 
setlocal enableDelayedExpansion 
for %%A in (100 200 300 400 500) do (
    set n=%%A 

    REM a FOR variable must be expanded 
    set /a x=%%A/25 

    REM an environment variable need not be expanded 
    set /a y=n/25 

    REM variables that were set within a block must be expanded using delayed expansion 
    echo x=!x!, y=!y! 

    REM another technique is to use CALL with doubled percents, but it is slower and less reliable 
    call echo x=%%x%%, y=%%y%% 
) 
1

यह कुछ भी नहीं कर रहा है क्योंकि "वाई" सिर्फ एक पत्र है। चर के संदर्भ में आपको प्रतिशत संकेतों की आवश्यकता है।

set /a x = %%y/25 
+0

आप वाई होने के बारे में सही हैं। लेकिन डबल प्रतिशत संकेत डालने से अभी भी विभाजित नहीं होता है। –

+0

@ डॉ-आरके - यह विभाजित होता है, यह आपका ईसीएचओ है जो असफल रहा है। [मेरा जवाब] देखें (http://stackoverflow.com/a/12118914/1012053) – dbenham

+0

['सेट/ए 'स्वचालित रूप से चर पहचानता है] (https://ss64.com/nt/set.html), कोई आवश्यकता नहीं है वहां '%%' डालें –