假设有一个名为app.exe的文件。
dir app.exe
给出:
Volume in drive C has no label. Volume Serial Number is CAA5-A19C Directory of C:\Users\Lazy\Downloads\batch 02/06/2015 23:50 20.280.135 app.exe 1 File(s) 20.280.135 bytes 0 Dir(s) 100.233.252.864 bytes free
从这一切我需要的文件大小(20.280.135)。 理想情况下,应该删除一个名为size.txt,只包含“20.280.135”,空格和/或换行的文件。 后面的想法是使用该文件(size.txt)作为LaTeX文档中的input。
如何只从dir命令获取文件大小?
保存为ex。 getFileSize.cmd
并称为
getFileSize.cmd "C:\Users\Lazy\Downloads\batch\app.exe" > size.txt
将只生成带有虚线文件大小的指定文件,不包含空格,回车符或换行符。
@echo off setlocal enableextensions disabledelayedexpansion rem Locate file to handle for %%a in ("%~1") do ( rem Retrieve file size set "size=%%~za" & if not defined size set "size=0" rem Include dots in value setlocal enabledelayedexpansion for /l %%a in (3 4 35) do if not "!size:~0,-%%a!"=="" set "size=!size:~0,-%%a!.!size:~-%%a!" rem Output value without new lines <nul set /p"=!size!" endlocal )
不完全使用DIR
命令,但您可以从CMD
运行下面的命令来获取文件大小
for %I in (C:\Users\Lazy\Downloads\batch\app.exe) do @echo %~zI
尝试类似的东西:
@echo off Set Size= Set Log=Size.txt Set PathApp=C:\Program files\Mozilla Firefox\Firefox.exe call :filesize "%PathApp%" echo %Size% echo %Size% > %Log% Pause Start %Log% ::************************************************************** :: set filesize of 1st argument in %size% variable, and return ::************************************************************** :filesize set size=%~z1 Exit /b 0 ::**************************************************************