我编写了一个Batch文件,用于从提供的目录列表中获取磁盘空间。将字节转换为KB或MB时,不会打印任何数据。
@echo OFF
REM SQL CALL TO GET THE DIRECTORY LISTING
FOR /F "tokens=*" %%i in (directoryList.txt) DO (
for /F "tokens=3" %%S in ('dir %%i ^| findstr /c:"File(s)"') do (
SETLOCAL
SET /A "sizeKB=%%S/1024"
SET /A "sizeMB=%sizeKB% / 1024"
ECHO "Directory :: %%i with size :: %%S "
ECHO "IN MEGABYTE :: %sizeMB%"
ENDLOCAL
PAUSE
)
)
上述脚本的输出是......
Directory :: D:\xxx with size :: 723,234,123
IN MEGABYTE ::
请更正上述代码。
答案 0 :(得分:0)
@echo OFF
REM SQL CALL TO GET THE DIRECTORY LISTING
FOR /F "tokens=*" %%i in (directoryList.txt) DO (
for /F "tokens=3" %%S in ('dir /-c "%%i" ^| findstr /c:"File(s)"') do (
SETLOCAL ENABLEDELAYEDEXPANSION
SET /A "sizeKB=%%S/1024"
SET /A "sizeMB=!sizeKB! / 1024"
ECHO "Directory :: %%i with size :: %%S "
ECHO "IN KBYTE :: !sizeKB!"
ECHO "IN MEGABYTE :: !sizeMB!"
ENDLOCAL
PAUSE
)
)
答案 1 :(得分:0)
您收到的文字723,234,123
由于,
在aritmetic之前删除:
SET "sizeB=%%c"
SET "sizeB=!sizeB:,=!"
SET /A "sizeKB=!sizeB!/1024"
...