2016-10-10 3 views
2

Я ищу способ протестировать файл «resume.txt» перед выполнением прилагаемого оператора if/else. Есть ли способ проверить и посмотреть, существует ли файл exsists, и если его размер составляет> 0 КБ? ... Я хочу выйти из программы, если файл = < 0KB. Это возможно?Возможно проверить размер файла перед выдачей команды?

if exist C:\Job\Resume.txt (
    echo INPUT FILE C:\Job\Resume.txt 
    echo OUTPUT FILE %JOB_RESUME_LOC%\%FILE_DATETIME%_info.dat 
    copy C:\Job\Resume.txt%JOB_RESUME_LOC%\%FILE_DATETIME%_info.dat 
    echo File Resume.txt copied 
) else (
    echo File Resume.txt not copied 
) 

В принципе, если файл «Resume.txt» равен 0KB, выйдите из программы. В противном случае продолжите работу программы. Надеюсь, это не слишком смущает!

+0

вы можете получить размер файла с помощью 'for %% a in (resume.txt) do set size = %% ~ za' и сравнить его с простым' if'. – Stephan

ответ

0

Первая строка сценария партии.

@Where/T C:\Job:Resume.txt 2>Nul|Find /V " 0 ">Nul||Exit/B 1 

Это приведет к выходу из всего сценария, если файл не существует или имеет нулевой размер. Тогда вам просто нужно поставить свой обычный скрипт под эту строку.

1

на основе Stephan's comment:

for %%a in ("C:\Job\Resume.txt") do set /A size=%%~za + 0 
if %size% GTR 0 (
    echo INPUT FILE C:\Job\Resume.txt 
    echo OUTPUT FILE %JOB_RESUME_LOC%\%FILE_DATETIME%_info.dat 
    copy "C:\Job\Resume.txt" %JOB_RESUME_LOC%\%FILE_DATETIME%_info.dat 
    echo File Resume.txt copied 
) else (
    echo File Resume.txt not copied 
) 

Для объяснения, читайте call /? и Command Line arguments (Parameters). Далее цитируется заявление применяется к %a параметра:

%~za расширяет %a размеру файла

Если "C:\Job\Resume.txt" файл не существует, то %~za расширяется в пустую строку.
Следовательно, set /A size=%%~za + 0 возвращает 0.