Я думаю, что они будут там навсегда. Простая причина: MS не может поставить ОС, которая не поддерживает их, потому что никакая крупнейшая корпорация не купила бы ту ОС.
Если имя файла используется в качестве параметра для командного файла, все, что вам нужно, это % ~ 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"
Сохраните как файл.vbs
и введите в командной строке:
C:\test>cscript /nologo filesize.vbs file.txt
79 bytes
Используйте цикл для
(в пакете), чтобы получить результат возврата.
Если ваш % файл%
является входным параметром, вы можете использовать % ~ zN
, где N
- это число параметра.
Например, test.bat
содержащий
@echo %~z1
Будет отображать размер первого параметра, поэтому, если вы используете « test myFile.txt
», он отобразит размер соответствующего файла.
% ~ 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
Просто идея:
Вы можете получить размер файла, выполнив команду "dir":
>dir thing
И снова он возвращает так много вещей.
Может быть, вы сможете получить его оттуда. если поищете.
Но я не уверен.