Windows, बाइट्स के बैच प्रोग्राम आउटपुट को KB, MB या GB में कैसे बदलें?


0

विंडोज़ बैच में, बाइट्स को KB या MB या GB में कैसे बदलें?
बैच में, स्क्रीन पर आउटपुट कैसे करें?

नीचे एक विंडोज बैच है जो बाइट्स में एक फ़ोल्डर आकार को आउटपुट करता है।
उदाहरण:
d0 \ temp में 2,041,737,167 बाइट्स

@echo off    
set bytes=    
for /f "usebackq tokens=1,2,3,4" %%a in (`dir /s/w/c "d:\temp\" ^| findstr "File(s)"`) do set bytes=%%c    
echo %bytes%  bytes in d:\temp\*.*    
pause    

बैच में, कैसे परिवर्तित करें?
2,041,737,167 बाइट्स को:

1,993,883 KB (2,041,737,167 / 1024)
1947 MB (2,041,737,167 / 1048576)
1.9 GB (2,041,737,167 / 1073741824)

-


NT बैच फ़ाइलों में मठ - समाधान देखें: 32-बिट खंड
DavidPostill

मेरे पास SO पर यहां एक पोस्ट है जिसमें आप किसी भी तरीके से डायनेमिक पॉवरशेल का उपयोग करके अपने बैच स्क्रिप्ट में शामिल कर सकते हैं, लेकिन यह अभी भी शुद्ध बैच है बस बैच सीमा के लिए समायोजित करने के लिए एक PS का उपयोग कर रहा है: stackoverflow.com/questions/42729893/… ...। उस पोस्ट पर अन्य उत्तर के साथ-साथ आपको मददगार भी मिल सकता है, एक ऐसा मूल्य जो मैं जानता हूँ कि आप कभी नहीं जानते हैं।
दलाल जूस आईटी

जवाबों:


0

यदि आप अंकगणित करना चाहते हैं, तो आपको पहले हजार विभाजकों से छुटकारा पाने की आवश्यकता है। इसलिए, इसमें बदलाव dir /s/w/cकरें dir /s/w/-c। फिर, यह एक साधारण विभाजन है:

set /a kb=%bytes% / 1024
set /a mb=%bytes% / 1048576
set /a gb=%bytes% / 1073741824
echo %kb% kB
echo %mb% MB
echo %gb% GB

ध्यान दें कि संख्याएं 32 बिट्स की सटीकता तक सीमित हैं, इसलिए बड़े फ़ोल्डरों के लिए यह विफल हो जाएगा। इसके अलावा, जैसा कि योरिक ने उल्लेख किया है, संख्याओं को काट दिया जाएगा।

आउटपुट में हजार विभाजक नहीं होंगे। यदि आप चाहते हैं कि, यह पूरी तरह से एक नया सवाल है।


0

बैच फ्लोटिंग पॉइंट का समर्थन नहीं करता है जहाँ तक मुझे पता है, इसलिए आपके परिणाम कम हो जाएंगे:

@echo off
set /a "_number=2041737167/1073741824"
echo %_number%
pause

के 1बजाय उत्सर्जन होगा1.9

अक्सर, लोग गणित कार्यों के लिए cscript (आदि) कहेंगे (उदाहरण के लिए: https://stackoverflow.com/questions/1503888/floating-point-division-in-a-dos-batch )


0

cmd.exe एक 32 बिट्स प्रक्रिया है, इसलिए इस प्रकार है:

set /a result1=%bytes% / 1024

त्रुटि के साथ विफल होगा: "अमान्य संख्या। संख्याएँ 32-बिट्स तक सीमित हैं

यदि आप 64 बिट डिवाइस (आजकल इसकी संभावना है) में होते हैं, तो कमांड प्रॉम्प्ट से कॉल करें C:\Windows\SysWOW64\cmd.exeऔर यह काम करेगा, उदाहरण के लिए आप कमांड लाइन कुछ इस तरह होनी चाहिए:

C:\Windows\SysWOW64\cmd.exe /C path\to\batchfile.cmd

मैं syswow के cmd के साथ ज्यादा किस्मत नहीं देखता हूँ .. i.imgur.com/WReB1cs.png
barlop
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.