Tom*_*029 4 integer cmd numbers numeric batch-file
在网上找到了这个脚本。它的工作原理是我下载它的基本原因。但我想知道一些事情:
代码:
c:
cd\
@Echo ------------------------------------------------------
@Echo ------------------------------------------------------
@For /F "tokens=*" %%a IN ('"hostname"') do @Set summaryouthost=%%a
@Echo Integrity Check on: %summaryouthost%
@For /F "tokens=*" %%a IN ('"chdir"') do @Set summaryoutchdir=%%a
@Echo Integrity Check For the path: %summaryoutchdir%
@Echo ------------------------------------------------------
@For /F "tokens=*" %%a IN ('"date /T"') do @Set summaryoutsdate=%%a
@Echo Start Date: %summaryoutsdate%
@For /F "tokens=*" %%a IN ('"time /T"') do @Set summaryoutstime=%%a
@Echo Start time: %summaryoutstime%
@Echo ------------------------------------------------------
@For /F "tokens=*" %%a IN ('"dir /s /-c | find "bytes" | find /v "free""') do @Set summaryout=%%a
::@Echo %summaryout%
@For /f "tokens=1,2 delims=)" %%a in ("%summaryout%") do @set filesout=%%a&set sizeout=%%b
@For /f "tokens=*" %%a IN ('"dir /s /-c | find "bytes free""') do @Set summaryoutdir=%%a
::@Echo %summaryoutdir%
@For /f "tokens=1,2 delims=)" %%a in ("%summaryoutdir%") do @set filesoutdir=%%a&set sizeoutdir=%%b
@Set sizeout=%sizeout:bytes=%
::@Echo %sizeout%
@Set sizeout=%sizeout: =%
@set /A inbytes=%sizeout%
@set /A inkb=(%sizeout%) / 1024
@set /A inmb=(%sizeout%) / (1024*1024)
@set /A ingb=(%sizeout%) / (1024*1024*1024)
@For /F "tokens=*" %%a IN ('"date /T"') do @Set summaryoutedate=%%a
@Echo End Date: %summaryoutedate%
@For /F "tokens=*" %%a IN ('"time /T"') do @Set summaryoutetime=%%a
@Echo End time: %summaryoutetime%
@Echo ------------------------------------------------------
@Echo Total Number of Files is:%filesout%
@Echo Total Number of Directory is: %filesoutdir%
@Set sizeoutdir=%sizeoutdir:bytes=%
::@Echo %sizeoutdir%
@Set sizeoutdir=%sizeoutdir: =%
@Echo ------------------------------------------------------
@Echo Total Size is (BY) :%sizeout%
@Echo Total Size is (KB) :%inkb%
@Echo Total Size is (MB) :%inmb%
@Echo Total Size is (GB) :%ingb%
@Echo ------------------------------------------------------
@Echo Free Space is :%sizeoutdir%
@Echo ------------------------------------------------------
@Echo ------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)
输出:
------------------------------------------------------
------------------------------------------------------
Integrity Check on: Laptop01
Integrity Check For the path: C:\
------------------------------------------------------
Start Date: Sun 10/04/2015
Start time: 12:34 AM
------------------------------------------------------
Invalid number. Numbers are limited to 32-bits of presision.
Invalid number. Numbers are limited to 32-bits of presision.
Invalid number. Numbers are limited to 32-bits of presision.
Invalid number. Numbers are limited to 32-bits of presision.
End Date: Sun 10/04/2015
End time: 12:36 AM
------------------------------------------------------
Total Number of Files is:333914 File(s
Total Number of Directory is: 185869 Dir(s
------------------------------------------------------
Total Size is (BY) :248159912076
Total Size is (KB) :
Total Size is (MB) :
Total Size is (GB) :
------------------------------------------------------
Free Space is :625324642304free
------------------------------------------------------
------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)
在此先感谢您的帮助。
这是 的限制set /a。
有关变通方法,请参阅下面的“变通方法:32 位”。
算术表达式 (SET /a)
...
这些数字必须都在 32 位有符号整数范围内(-2,147,483,648 到 2,147,483,647)才能使用 PowerShell 或 VBScript 处理更大的数字。
源集
32 位限制的解决方法包括:
- 通过截去最后 (3) 位数字来除以 1000(或 10 的任何幂)
- 将数字拆分为单独的十进制数字并“手动”执行所有数学运算和进位逻辑
- 其他脚本语言
解决方法 #1 可用于增加磁盘空间:
诀窍是将每个(大)数字视为字符串,然后将最右边的 6 个字符(数字)切掉,然后才将结果视为数字。
这是一个相当粗糙的解决方法,因为它在进行数学运算之前“四舍五入”了所有数字。
但是,将每个子目录 (%Count% / 2) 的半兆字节添加到 %Total% 确实可以补偿截断,因此总计比单个数字更准确。
请注意,这些数字并不代表“真正的”兆字节 (1024 x 1024),而是代表百万字节 (1000 x 1000)。
解决方法 #2 由 Brian Williams 的批处理文件完美展示:
解决方法 #3,其他脚本语言,不言自明。
Windows CMD 命令行的 AZ 索引- Windows cmd 行相关的所有内容的极好参考。
set - 显示、设置或删除 CMD 环境变量。使用 SET 所做的更改将仅在当前 CMD 会话期间保留。
| 归档时间: |
|
| 查看次数: |
7814 次 |
| 最近记录: |