batch-file - 확인 - 윈도우 배치파일 실행
Windows 배치 스크립트에서 파일 크기를 확인하려면 어떻게합니까? (9)
파일 filesize
가 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
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