Показать полную графическую версию : [решено] если файл существует, выполнить
Alexander_88
01-07-2018, 11:43
здравствуйте, подскажите как можно проверить существует ли файл, если да, то выполнить не одну, а несколько команд и продолжить код, а если не существует, то просто продолжить код?
if exist = "new.txt" pause
вроде выполняет паузу, если находит файл.. но как добавить еще одну команду.. ?например
if exist = "new.txt" pause, del *.txt
Alexander_88
01-07-2018, 12:40
Нашел, через &
только вот если использовать две команды, удаление и копирование.. показывается отчет только последнего действия..
"Скопировано 1 файл"
Нельзя ли сделать, отчет для всех действий?
как можно проверить существует ли файл, если да, то выполнить не одну, а несколько команд »
if exist "bla-bla-bla.txt" (
echo bla-bla-bla1
echo bla-bla-bla2
echo bla-bla-bla3
)
например
if exist = "new.txt" pause, del *.txt »
if exist "new.txt" (
pause
del *.txt
)
Нашел, через & »
Необязательно «через &». Это, скорее, исключение, нежели типичное использование.
только вот если использовать две команды, удаление и копирование.. показывается отчет только последнего действия.. »
Это совсем не так. По умолчанию команда del не отображает имена удалённых файлов. Читайте:
del /?
о том, как изменить данное поведение.
megaloman
01-07-2018, 13:10
Alexander_88, @Echo Off
If Exist "new.txt" (
Echo File Exist
Del *.txt
Pause
)
rem остальной код
То есть, вы можете нарисовать сколько угодно строк. Но при этом надо помнить, что при присваивании переменным значений (Set что-то=чему-то) будет проблема с раскрытием этих значений
Я бы предпочел с точки зрения читаемости кода и свободы работы с переменными оформить процедуру, например вот так@Echo Off
If Exist "new.txt" Call :FExist "*.txt"
rem остальной код
GoTo :Eof
:FExist
Echo File Exist
Del %1
Pause
GoTo :Eof
Опять же, естественно в процедуре можете нарисовать нужное количество строк кода
Alexander_88
01-07-2018, 13:35
спасибо.. вроде заработало :)
Alexander_88, ну и можно действовать "от противного", что в ряде случаев облегчает задачу:
if NOT exist "<Drive>:\<Path>\new.txt" GoTo :SkipCode
Echo File Exist
Del *.txt
Pause
(и т.д.)
:SkipCode
(и далее — продолжение батника)
Во избежание "неожиданных" осложнений с исполнением батника имеет смысл указывать не просто имя файла, а имя с полным путём, как в примере (либо применять любые другие варианты типа pushd, чтобы оказаться именно в каталоге файла new.txt).
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC