Batch file 获取文件大小的批处理脚本
我编写了一个批处理脚本来获取文件大小并将其转储到.csv文件中。但是脚本没有为大于2GB的文件发布任何数据。我被set targetDBSize函数卡住了。有人能帮我吗 以下是脚本:Batch file 获取文件大小的批处理脚本,batch-file,Batch File,我编写了一个批处理脚本来获取文件大小并将其转储到.csv文件中。但是脚本没有为大于2GB的文件发布任何数据。我被set targetDBSize函数卡住了。有人能帮我吗 以下是脚本: set targetDBSize= for %%G in ("\\opsprddb01\c$\Progra~1\Micros~1\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\%targetSite%.mdf") do set /A targetDBSize=%%~zG/1024/102
set targetDBSize=
for %%G in ("\\opsprddb01\c$\Progra~1\Micros~1\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\%targetSite%.mdf")
do set /A targetDBSize=%%~zG/1024/1024
谢谢
Kalyan您有一个算术溢出。尝试执行以下操作:
SET /A targetDBSize = 2147483647+1
算术运算是在32位有符号整数上完成的,因此可以安全显示的最大文件大小是2^31-1=2147483647
解决方案:
将其与Powershell结合使用
for /f %%N in ('powershell %~z2/1024/1024/1024') do set len=%%N
它可以工作,但速度不是很快。用一种可以使用诸如JavaScript的VBScript之类的浮点的语言编写自己的脚本更容易。或者,也可以将迭代和求和放在PowerShell中。。。e、 g.
powershell”(ls'\\opsprddb01\c$\Progra~1\Micros~1\MSSQL10\u 50.MSSQLSERVER\MSSQL\DATA\%targetSite%.mdf'| measure-sum).sum/1gb“
。这样,您就不必为每个文件不必要地启动PowerShell一次。@svekke我尝试了以下方法:在(“\opsprddb01\c$\Progra~1\Micros~1\MSSQL10\u 50.MSSQLSERVER\M”中为%%G设置targetDBSize=SSQL\DATA\%targetSite%.mdf“)在('powershell%~z2/1024/1024/1024/1024')中为/f%%N设置/A DBSize=%%~zG是否设置targetDBSize=%%%N仍被卡住-Kalyan@VenkataKalyan将代码放入backticks`中,就像这样`
,使其可读