71

ファイルの内容をチェックするバッチファイルが必要filesizeです。

それよりも大きい場合は%somany% kbytes,、GOTO で別の場所にリダイレクトする必要があります。

例:

[check for filesize]
IF %file% [filesize thing Bigger than] GOTO No
echo Great! Your filesize is smaller than %somany% kbytes.
pause
exit
:no
echo Um... You have a big filesize.
pause
exit
4

14 に答える 14

105

ファイル名がバッチ ファイルのパラメーターとして使用されている場合、必要なのは%~z1(1 は最初のパラメーターを意味する)だけです。

ファイル名がパラメーターでない場合は、次のようにすることができます。

@echo off
setlocal
set file="test.cmd"
set maxbytesize=1000

FOR /F "usebackq" %%A IN ('%file%') DO set size=%%~zA

if %size% LSS %maxbytesize% (
    echo.File is ^< %maxbytesize% bytes
) ELSE (
    echo.File is ^>= %maxbytesize% bytes
)
于 2009-07-29T12:15:34.287 に答える
11

%~z1バッチファイルの最初の引数のサイズに拡張されます。見る

C:\> call /?

C:\> if /?

簡単な例:

@ECHO OFF
SET SIZELIMIT=1000
SET FILESIZE=%~z1

IF %FILESIZE% GTR %SIZELIMIT% Goto No

ECHO Great! Your filesize is smaller than %SIZELIMIT% kbytes.
PAUSE
GOTO :EOF

:No
ECHO Um ... You have a big filesize.
PAUSE
GOTO :EOF
于 2009-07-29T12:08:14.353 に答える
8

%file%が入力パラメータの場合は、を使用できます。%~zNここNで、はパラメータの番号です。

例:test.bat含む

@echo %~z1

最初のパラメータのサイズが表示されるため、「test myFile.txt」を使用すると、対応するファイルのサイズが表示されます。

于 2009-07-29T12:07:38.970 に答える
4

いつものように、VBScriptを使用できます。

Set objFS = CreateObject("Scripting.FileSystemObject")
Set wshArgs = WScript.Arguments
strFile = wshArgs(0)
WScript.Echo objFS.GetFile(strFile).Size & " bytes"

名前を付けて保存filesize.vbsし、コマンドラインに入力します。

C:\test>cscript /nologo filesize.vbs file.txt
79 bytes

ループを(バッチで)使用forして、戻り結果を取得します。

于 2009-07-29T12:06:32.827 に答える
2

いくつかの「試してテスト」を繰り返した後、サイクル変数(コマンドラインパラメーターではない)でファイルのサイズを取得する方法(まだここにはありません)を見つけました:

for %%i in (*.txt) do (
    echo %%~z%i
)
于 2016-10-13T10:45:41.527 に答える
1

Windows に何かが組み込まれているかどうかを確認するために、この古い質問を見ました。~z のことは、私が知らなかったものですが、私には当てはまりません。私はPerlのワンライナーで終わった:

@echo off

set yourfile=output.txt
set maxsize=10000

perl -e "-s $ENV{yourfile} > $ENV{maxsize} ? exit 1 : exit 0"
rem if %errorlevel%. equ 1. goto abort
if errorlevel 1 goto abort

echo OK!
exit /b 0

:abort
echo Bad!
exit /b 1
于 2013-07-14T20:06:30.730 に答える
0

注意すべき重要な点は、バッチの INT32 制限です: '無効な数値です。数値は 32 ビットの精度に制限されています。

次のステートメントを試してください。

IF 2147483647 GTR 2147483646 echo A is greater than B (will be TRUE)
IF 2147483648 GTR 2147483647 echo A is greater than B (will be FALSE!)

INT32 の最大値より大きい数値は、スクリプトを壊します! ファイルサイズはバイト単位で測定されるため、スクリプトは約 255.9999997615814 MB の最大ファイルサイズをサポートします。

于 2015-01-26T15:07:15.333 に答える
-5

ただのアイデア:

コマンド「dir」を実行すると、ファイルサイズを取得できます。

>dir thing

それからまた、非常に多くのものを返します。

そこから探せば手に入るかも。

しかし、よくわかりません。

于 2009-07-29T11:54:59.797 に答える