Как я могу проверить размер файла в сценарии пакетной обработки Windows?

Я думаю, что они будут там навсегда. Простая причина: MS не может поставить ОС, которая не поддерживает их, потому что никакая крупнейшая корпорация не купила бы ту ОС.

59
задан 0m3r 22 July 2015 в 09:30
поделиться

5 ответов

Если имя файла используется в качестве параметра для командного файла, все, что вам нужно, это % ~ 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
)
97
ответ дан 24 November 2019 в 18:10
поделиться

Как обычно, VBScript доступен для использования .....

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

Сохраните как файл.vbs и введите в командной строке:

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

Используйте цикл для (в пакете), чтобы получить результат возврата.

4
ответ дан 24 November 2019 в 18:10
поделиться

Если ваш % файл% является входным параметром, вы можете использовать % ~ zN , где N - это число параметра.

Например, test.bat содержащий

@echo %~z1

Будет отображать размер первого параметра, поэтому, если вы используете « test myFile.txt », он отобразит размер соответствующего файла.

8
ответ дан 24 November 2019 в 18:10
поделиться

% ~ 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
11
ответ дан 24 November 2019 в 18:10
поделиться

Просто идея:

Вы можете получить размер файла, выполнив команду "dir":

>dir thing

И снова он возвращает так много вещей.

Может быть, вы сможете получить его оттуда. если поищете.

Но я не уверен.

-4
ответ дан 24 November 2019 в 18:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: