Windows 如何从win cmd“获取文件大小”;目录;?

Windows 如何从win cmd“获取文件大小”;目录;?,windows,batch-file,Windows,Batch File,假设有一个名为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

假设有一个名为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文档的输入


如何仅从dir命令获取文件大小?

不完全使用
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
::**************************************************************

另存为ex.
getFileSize.cmd
并称为

getFileSize.cmd "C:\Users\Lazy\Downloads\batch\app.exe" > size.txt
将生成仅具有虚线文件大小的指示文件,不带空格、回车符或换行符

@echo关闭
setlocal enableextensions disabledelayedexpansion
rem定位要处理的文件
对于(“%1”)中的%%a,请执行以下操作(
rem检索文件大小
设置“大小=%%~za”&如果未定义大小,则设置“大小=0”
rem在值中包含点
延迟扩展
对于(3 4 35)中的/l%%a,如果没有“!size:~0,-%%a!”==”设置“size=!size:~0,-%%a!”!size:~-%a!”
rem输出值,无新行

重复感谢@Rahul!可以使用标点符号20.280.135而不是20280135?还可以删除结尾处的空格和新行?我在尝试从批处理脚本文件运行此脚本时遇到困难。输出为“~zI此时出乎意料”。在批处理脚本中,您需要将
元变量的
%
增加一倍(即循环控制变量,
%I
,在这种情况下)。请尝试
中的%%I(C:\Users\Lazy\Downloads\batch\app.exe)执行echo%%zI
,如果我从命令行调用它,效果很好(如您的建议)。但是如果从另一个脚本调用它,它将不起作用。从另一个脚本调用它有什么诀窍吗?请更新脚本,使文件名(size.txt)在脚本中硬编码。然后我将复制并通过我的脚本(我实际上从另一个脚本调用此脚本)@oqrxke,要从另一个批处理文件调用批处理文件,您需要使用
call
命令。因此,它应该是
call“x:\somewhere\getFileSize.cmd”“C:\Users\Lazy\Downloads\batch\app.exe”>“x:\some\place\size.txt”
。如果您喜欢硬编码,请用可执行文件的名称替换
%1
“x:\somewhere\size.txt”set/p“=!size!”
请您解释一下好吗?