Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 获取文件大小的批处理脚本_Batch File - Fatal编程技术网

Batch file 获取文件大小的批处理脚本

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

我编写了一个批处理脚本来获取文件大小并将其转储到.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/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\%targetSit‌​e%.mdf“)在('powershell%~z2/1024/1024/1024/1024')中为/f%%N设置/A DBSize=%%~zG是否设置targetDBSize=%%%N仍被卡住-Kalyan@VenkataKalyan将代码放入backticks
`中,就像这样`
,使其可读