Windows命令仅用于文件大小?

Lia*_*iam 41 windows command-line

是否有Windows命令将输出指定文件的大小(如下所示)?

> filesize test.jpg
65212
Run Code Online (Sandbox Code Playgroud)

我知道dir命令输出这些信息,但它也输出其他信息.

我可以轻松编写这样的程序,但我更愿意使用本机Windows命令(如果可能),或者只使用全新安装的Windows XP中可用的命令.

Mik*_*ton 47

如果您在批处理脚本中,则可以使用参数变量技巧来获取文件大小:

filesize.bat:

@echo off
echo %~z1
Run Code Online (Sandbox Code Playgroud)

这会给出您在问题中建议的结果.

类型

help call
Run Code Online (Sandbox Code Playgroud)

在命令提示符下所有疯狂的变量操作选项.另请参阅此文章以获取更多信息.

编辑: 这仅适用于Windows 2000及更高版本

  • 请注意,这仅适用于一个文件.如果你想传入一个掩码来获取多个文件的大小,可以将第二行更改为`for %% I in(%1)do @echo %% ~znI`. (9认同)

Pat*_*uff 42

如果您不想在批处理脚本中执行此操作,可以从命令行执行此操作,如下所示:

for %I in (test.jpg) do @echo %~zI
Run Code Online (Sandbox Code Playgroud)

丑陋,但它的工作原理.您还可以传入文件掩码以获取多个文件的列表:

for %I in (*.doc) do @echo %~znI
Run Code Online (Sandbox Code Playgroud)

将显示每个.DOC文件的大小,文件名.


Dav*_*che 11

使用函数摆脱~z运算符中的某些限制,特别适用于for循环:

@echo off
set size=0
call :filesize "C:\backup\20120714-0035\error.log"
echo file size is %size%
goto :eof

:: Set filesize of first argument in %size% variable, and return
:filesize
  set size=%~z1
  exit /b 0
Run Code Online (Sandbox Code Playgroud)


小智 10

试试forfiles:

forfiles /p C:\Temp /m file1.txt /c "cmd /c echo @fsize"
Run Code Online (Sandbox Code Playgroud)

forfiles命令运行命令c为每个文件m的目录p.

变量@fsize将替换为每个文件的大小.

如果文件C:\Temp\file1.txt是27个字节,请forfiles运行以下命令:

cmd /c echo 27
Run Code Online (Sandbox Code Playgroud)

哪个打印27到屏幕上.

作为副作用,它会清除您的屏幕,就像您运行cls命令一样.


Sco*_*ein 6

由于您使用的是 Windows XP,因此可以选择 Windows PowerShell。

(Get-Item filespec ).Length 
Run Code Online (Sandbox Code Playgroud)

或者作为一个函数

function Get-FileLength { (Get-Item $args).Length }
Get-FileLength filespec
Run Code Online (Sandbox Code Playgroud)