batch-file - 확인 - 윈도우 배치파일 실행




Windows 배치 스크립트에서 파일 크기를 확인하려면 어떻게합니까? (9)

파일 filesizefilesize 인지 확인하는 배치 파일을 원합니다.

%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

DOS 기능을 사용하는 것을 선호합니다. 기분이 나에게 깨끗해.

SET SIZELIMIT=1000
CALL :FileSize %1 FileSize
IF %FileSize% GTR %SIZELIMIT% Echo Large file

GOTO :EOF

:FileSize
SET %~2=%~z1

GOTO :EOF

GetFileSize.bat를 포함하는 한 줄 배치 파일 만들기

GetFileSize=%~z1

전화 해.

call GetFileSize  myfile.txt
if (%GetFileSize) == ()     goto No_File
if (%GetFileSize) == (0)    goto No_Data
if (%GetFileSize) GTR 1000  goto Too_Much_Data
rem Etc.

성가신 필수 파일을 제거하기 위해 테스트 파일을 즉석에서 만들 수도 있습니다. echo 문에서 이중 비율을 확인하십시오.

echo set GetFileSize=%%~z1 > %temp%\GetFileSize.bat
call %temp%\GetFileSize  myfile.txt
if (%GetFileSize) GTR 1000  goto Too_Much_Data
rem etc

이 후자의 해결책은 antispaghetti입니다. 너무 좋아. 그러나 더 많은 디스크 쓰기. 사용 횟수를 확인하십시오.


Windows가 무언가를 내장하고 있는지를보기 위해이 오래된 질문을 보았습니다. z 항목은 내가 알지 못했지만 적용 할 수없는 것입니다. 나는 Perl one-liner로 끝났다.

@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

그냥 생각 :

"dir"명령을 실행하여 파일 크기를 얻을 수 있습니다.

>dir thing

그런 다음 다시 많은 것들을 돌려줍니다.

당신이 그것을 찾으면 아마 거기에서 그것을 얻을 수 있습니다.

그러나 나는 확실하지 않다.


다른 예시

  FOR %I in (file1.txt) do @ECHO %~zI

몇 가지 "시도하고 테스트"반복 후 (아직 여기에 존재하지 않는) 사이클 변수 (안 명령 줄 매개 변수) 파일의 크기를 얻는 방법을 발견했습니다 :

for %%i in (*.txt) do (
    echo %%~z%i
)

파일 이름이 배치 파일의 매개 변수로 사용되면 필요한 것은 %~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
)

평소처럼 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 루프 (일괄 처리)를 사용하여 반환 결과를 가져옵니다.


%~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




filesize