是否有一個Windows命令會輸出這樣的指定文件的字節大小?僅用於文件大小的Windows命令?
>filesize test.jpg
65212
我知道dir命令輸出這個信息,但它也輸出其他信息。
我可以很容易地編寫這樣一個程序,但我更願意使用本機Windows命令(如果可能),或者只使用Windows XP全新安裝中的可用命令。
是否有一個Windows命令會輸出這樣的指定文件的字節大小?僅用於文件大小的Windows命令?
>filesize test.jpg
65212
我知道dir命令輸出這個信息,但它也輸出其他信息。
我可以很容易地編寫這樣一個程序,但我更願意使用本機Windows命令(如果可能),或者只使用Windows XP全新安裝中的可用命令。
如果你是一個批處理腳本中,你可以使用參數變量過關獲得文件大小:
filesize.bat:
@echo off
echo %~z1
這給出了您在問題中建議的結果。
類型
help call
在所有的瘋狂變量處理選項命令提示符。另請參閱this article瞭解更多信息。
編輯: 這僅適用於Windows 2000及以後
在PowerShell中,你可以這樣做:
$imageObj = New-Object System.IO.FileInfo("C:\test.jpg")
$imageObj.Length
它會工作,但它會忽略PowerShell的所有常見任務的內置功能 – 2009-01-27 16:59:36
您寧可使用Get-ChildItem test.jpg |在Powershell中選擇對象的長度。 – Joey 2009-05-19 06:16:14
如果你不希望這樣做在一個批處理腳本,你可以像在命令行中執行此操作:
for %I in (test.jpg) do @echo %~zI
醜,但它的作品。您還可以傳入文件掩碼以獲取多個文件的列表:
for %I in (*.doc) do @echo %~znI
將顯示每個.DOC文件的大小,文件名。
不錯,我想知道如何通過命令行 – 2009-01-27 16:35:29
由於您使用的是XP,因此Windows PowerShell是一個選項。
(Get-Item filespec).Length
或作爲功能
function Get-FileLength { (Get-Item $args).Length }
Get-FileLength filespec
嘗試forfiles:
forfiles /p C:\Temp /m file1.txt /c "cmd /c echo @fsize"
的forfiles
命令運行命令c
在目錄p
每個文件m
。
將變量@fsize
替換爲每個文件的大小。
如果文件C:\Temp\file1.txt
是27個字節,forfiles
運行此命令:
cmd /c echo 27
它打印27
到屏幕上。
作爲一個副作用,它會清除屏幕,就像您運行cls
命令一樣。
在PowerShell中你應該做到這一點:
(GET-ChildItem C:\ TEMP \ FILE1.TXT)。長度
使用函數來獲得〜Z運營商擺脫了一些限制,尤其是與用於環路有用的:
@echo off
set size=0
call :filesize "C:\backup\20120714-0035\error.log"
echo file size is %size%
goto :eof
:: set filesize of 1st argument in %size% variable, and return
:filesize
set size=%~z1
exit /b 0
摘自from here:
以下命令查找文件夾個在比在所述d大小100 MB的:驅動器:
diruse /s /m /q:100 /d d:
/s選項將導致要被搜索的子目錄,以兆字節/ m選項顯示磁盤的使用,和/ q:100選項會導致文件夾那大於100 MB將被標記,而/ d選項僅顯示超過/ q指定的閾值的文件夾。
使用diskuse命令查找超過一定大小的文件。過在對d大小100 MB下面的命令顯示文件:驅動器:
diskuse D: /x:104857600 /v /s
的/ X:104857600選項導致超過104857600個字節的文件被顯示,並且是有效的只有如果包括/ v選項(詳細)。/s選項意味着搜索指定路徑(在本例中爲D:驅動器)的子目錄。
使用VBScript
' This code finds all files over a certain size.
' ------ SCRIPT CONFIGURATION ------
strComputer = "**<ServerName>**"
intSizeBytes = 1024 * 1024 * 500 ' = 500 MB
' ------ END CONFIGURATION ---------
set objWMI = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
set colFiles = objWMI.ExecQuery _
("Select * from CIM_DataFile where FileSize > '" & intSizeBytes & "'")
for each objFile in colFiles
Wscript.Echo objFile.Name & " " & objFile.Filesize/1024/1024 & "MB"
next
C:\>FORFILES /C "cmd /c echo @fname @fsize"
C:\>FORFILES /?
FORFILES [/P pathname] [/M searchmask] [/S]
[/C command] [/D [+ | -] {MM/dd/yyyy | dd}]
Description:
Selects a file (or set of files) and executes a
command on that file. This is helpful for batch jobs.
Parameter List:
/P pathname Indicates the path to start searching.
The default folder is the current working
directory (.).
這不正是你問關於什麼的,它只能在命令行中使用(並可能批處理文件沒用),但一快速的方法來檢查文件的大小僅僅是使用dir
:
> dir Microsoft.WindowsAzure.Storage.xml
結果:
Directory of C:\PathToTheFile
08/10/2015 10:57 AM 2,905,897 Microsoft.WindowsAzure.Storage.xml
1 File(s) 2,905,897 bytes
0 Dir(s) 759,192,064,000 bytes free
創建filesize.cmd(並投入到C:\ Windows \ System32下):
@echo %~z1
在一個批處理文件,以下適用於本地文件,但無法對網絡硬盤
文件for %%I in ("test.jpg") do @set filesize=%~z1
但是,它是劣質的代碼,因爲它不適用於保存在網絡驅動器上的文件(例如\ Nas \ test.jpg,\ 192.168.2.40 \ test.jpg)以下代碼適用於任何位置的文件,請自行編寫。我敢肯定有更高效的方法來使用vbs或powershell或其他方法來做這件事,但我不想做任何這樣的事情,對我來說很好!
set file=C:\Users\Admin\Documents\test.jpg
set /a filesize=
set fileExclPath=%file:*\=%
:onemoretime
set fileExclPath2=%fileExclPath:*\=%
set fileExclPath=%fileExclPath2:*\=%
if /i "%fileExclPath%" NEQ "%fileExclPath2%" goto:onemoretime
dir /s /a-d "%workingdir%">"%temp%\temp.txt"
findstr /C:"%fileExclPath%" "%temp%\temp.txt" >"%temp%\temp2.txt"
set /p filesize= <"%temp%\temp2.txt"
echo set filesize=%%filesize: %fileExclPath%%ext%=%% >"%temp%\temp.bat"
call "%temp%\temp.bat"
:RemoveTrailingSpace
if /i "%filesize:~-1%" EQU " " set filesize=%filesize:~0,-1%
if /i "%filesize:~-1%" EQU " " goto:RemoveTrailingSpace
:onemoretime2
set filesize2=%filesize:* =%
set filesize=%filesize2:* =%
if /i "%filesize%" NEQ "%filesize2%" goto:onemoretime2
set filesize=%filesize:,=%
echo %filesize% bytes
SET /a filesizeMB=%filesize%/1024/1024
echo %filesizeMB% MB
SET /a filesizeGB=%filesize%/1024/1024/1024
echo %filesizeGB% GB
請注意,這隻適用於一個文件。如果您希望能夠傳入掩碼以獲取多個文件的大小,請將第二行更改爲「for %% I in(%1)do @echo %%〜znI`。 – 2009-01-27 16:41:49
@Mike,但計數通道標準輸出的字節數的命令是什麼? (而不是保存的文件) – Pacerier 2016-08-04 20:46:27
@Pacerier,不知道是否可以使用這種方法。 %〜z變量具體指的是作爲參數傳遞的文件,因此將從文件系統中查找它們的值,而不是動態的字節流。 – 2016-08-05 17:39:05