CMD/BAT - [решено] если файл существует, выполнить

Ответить
Аватара пользователя
Alexander_88

CMD/BAT - [решено] если файл существует, выполнить

Сообщение Alexander_88 »

здравствуйте, подскажите как можно проверить существует ли файл, если да, то выполнить не одну, а несколько команд и продолжить код, а если не существует, то просто продолжить код?





Код:

Код: Выделить всё

if exist = "new.txt" pause

вроде выполняет паузу, если находит файл.. но как добавить еще одну команду.. ?например





Код:

Код: Выделить всё

if exist = "new.txt" pause, del *.txt
Аватара пользователя
Alexander_88

Re: CMD/BAT - [решено] если файл существует, выполнить

Сообщение Alexander_88 »

Нашел, через &



только вот если использовать две команды, удаление и копирование.. показывается отчет только последнего действия..

"Скопировано 1 файл"

Нельзя ли сделать, отчет для всех действий?
Аватара пользователя
Alexander_88

Re: CMD/BAT - [решено] если файл существует, выполнить

Сообщение Alexander_88 »

Цитата Alexander_88:



как можно проверить существует ли файл, если да, то выполнить не одну, а несколько команд
CMD/BAT - [решено] если файл существует, выполнить






Код:

Код: Выделить всё

if exist "bla-bla-bla.txt" (
    echo bla-bla-bla1
    echo bla-bla-bla2
    echo bla-bla-bla3
)


Цитата Alexander_88:



например



Код:

Код: Выделить всё

if exist = "new.txt" pause, del *.txt

CMD/BAT - [решено] если файл существует, выполнить






Код:

Код: Выделить всё

if exist "new.txt" (
    pause
    del *.txt
)


Цитата Alexander_88:



Нашел, через &
CMD/BAT - [решено] если файл существует, выполнить




Необязательно «через &». Это, скорее, исключение, нежели типичное использование.




Цитата Alexander_88:



только вот если использовать две команды, удаление и копирование.. показывается отчет только последнего действия..
CMD/BAT - [решено] если файл существует, выполнить




Это совсем не так. По умолчанию команда del не отображает имена удалённых файлов. Читайте:



Код:

о том, как изменить данное поведение.
Аватара пользователя
megaloman

Re: CMD/BAT - [решено] если файл существует, выполнить

Сообщение megaloman »

Alexander_88,


Я бы предложил так:

[spoiler]Код:
[/spoiler]

Код: Выделить всё

@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

Re: CMD/BAT - [решено] если файл существует, выполнить

Сообщение Alexander_88 »

Alexander_88, ну и можно действовать "от противного", что в ряде случаев облегчает задачу:



Код:

Код: Выделить всё

if NOT exist ":\\new.txt" GoTo :SkipCode
	Echo File Exist
	Del *.txt
	Pause
(и т.д.)
:SkipCode
(и далее — продолжение батника)

Во избежание "неожиданных" осложнений с исполнением батника имеет смысл указывать не просто имя файла, а имя с полным путём, как в примере (либо применять любые другие варианты типа pushd, чтобы оказаться именно в каталоге файла new.txt).
Ответить

Вернуться в «Скриптовые языки администрирования Windows»