Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Помощь со скриптом - проверка наличия файла и процессов

Ответить
Настройки темы
CMD/BAT - [решено] Помощь со скриптом - проверка наличия файла и процессов

Аватара для DimmKo

Пользователь


Сообщения: 65
Благодарности: 1


Конфигурация

Профиль | Сайт | Отправить PM | Цитировать


Товарищи, помогите, пожалуйста, написать скрипт для Windows XP.

Задача: проверить наличие файла test1:
1) если файл есть, то ничего не делать. Выход.

2) если файла нет, то:
2.1) проверить наличие процесса proc1: Если есть - завершить, если нет - ничего не делать.
2.2) проверить наличие процесса proc2: Если есть - завершить, если нет - ничего не делать.
2.3) скопировать test1.a --> test1, запустить proc1 (тот сам запустит proc2, потому этого достаточно).

Я, к сожалению, в скриптах не силен. В Linux простые скрипты мне даются, а в Windows пока никак.

Буду благодарен за помощь.

Спасибо.

Отправлено: 09:34, 03-05-2018

 

Аватара для DimmKo

Пользователь


Сообщения: 65
Благодарности: 1

Профиль | Сайт | Отправить PM | Цитировать


Цитата Iska:
Можно. А что, собственно, писать-то — весь код из четырёх строчек?! »
если бы я знал как))
Не могли бы Вы добавить, пожалуйста?

Как пример:
- файл есть - выхожу,
- файла нет:
-- убиваю процесс такой-то,
-- убиваю процесс такой-то,
-- создаю файл,
-- запускаю процесс такой-то.

Соответственно дата и время. Хотя бы понимать как часто пропадает файл.
Спасибо.

Отправлено: 16:48, 11-05-2018 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата DimmKo:
Не могли бы Вы добавить, пожалуйста? »
Держите:
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

if not exist "%~dp0test1" (
	echo %date% %time%	File [%~dp0test1] not found.
	echo %date% %time%	Try killing processes [proc1] and [proc2]...
	>nul 2>&1 taskkill.exe /im "proc1" /im "proc2"
	echo %date% %time%	Creating file [%~dp0test1].
	>nul copy nul "%~dp0test1"
	echo %date% %time%	Try executing process from file [%~dp0proc1]...
	start "" "%~dp0proc1"
) else (
	echo %date% %time%	File [%~dp0test1] found.
)

endlocal
exit /b 0
При вызове пакетного файла задаёте перенаправление вывода во внешний файл, наподобие:
Код: Выделить весь код
"%comspec%" /c">>"Output.txt" 2>&1 "C:\Мои проекты\0157\0001.cmd""
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:03, 11-05-2018 | #12


Аватара для DimmKo

Пользователь


Сообщения: 65
Благодарности: 1

Профиль | Сайт | Отправить PM | Цитировать


Iska, класс...

Интересно, в bash можно сделать функцию и просто ее вставлять где надо, а тут такое же возможно. Или это уже PowerShell начинается.

Большое спасибо!

Отправлено: 17:10, 11-05-2018 | #13


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата DimmKo:
в bash можно сделать функцию и просто ее вставлять где надо »
DimmKo, например?

Отправлено: 17:37, 11-05-2018 | #14


Аватара для DimmKo

Пользователь


Сообщения: 65
Благодарности: 1

Профиль | Сайт | Отправить PM | Цитировать


Iska, извините, уезжал.

я вот так делаю (не претендую на правильность)

функция (bash) для логирования

Код: Выделить весь код
function F_LOG () {
echo "`date +"%F %T"` $1"
}

F_LOG "START"
здесь просто для примера.

Потом этот F_LOG везде втыкиваю где надо и всё на этом.


Это если в консоль. Так, конечно, делаю перенаправление ">>" в файл.

Отправлено: 13:39, 16-05-2018 | #15


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


DimmKo, спасибо, ясно.

В пакетных файлах ОС Windows такого нет. В самом пакетном файле могут использоваться «как бы» подпрограммы/процедуры (наличествует возможность передачи параметров, возврата значений через обращение к переменным окружения вызвавшего контекста, локальные переменные окружения). Кроме того, возможно использование макроподстановок. Но вот именно такого — нет.

Подобное (и многое, многое другое) наличествует в новом командном языке ОС Windows — PowerShell.

Отправлено: 14:07, 16-05-2018 | #16


Аватара для DimmKo

Пользователь


Сообщения: 65
Благодарности: 1

Профиль | Сайт | Отправить PM | Цитировать


Iska, спасибо за разъяснение.

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

Кстати, скрипт работает на ура. Ну, по крайней мере, я уже какое время не получаю дурацкие смс, что что-то там не работает (файл когда удаляется, то при старте программы ошибка, т.к. этого файла нет. Для чего он нужен - хз, те кто писал, уже давно уволились).
Смотрю в лог, что-то он туда пишет... красотища!
Вот еще раз Вам спасибо!

Отправлено: 14:36, 16-05-2018 | #17


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


DimmKo, рад был помочь.

Отправлено: 23:17, 16-05-2018 | #18



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Помощь со скриптом - проверка наличия файла и процессов

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Любой язык - проверка наличия файла в директории icetanker Скриптовые языки администрирования Windows 11 19-10-2014 21:37
VBS/WSH/JS - Проверка наличия файла в папке в случае отсутствия перезагружать компьютер NickCom Программирование и базы данных 4 19-08-2013 05:13
CMD/BAT - [решено] автоматическая проверка наличия файла и его шифрование DorianWolf Скриптовые языки администрирования Windows 2 10-12-2012 17:31
Любой язык - [решено] Проверка наличия файла на веб-сервере Vadikan Скриптовые языки администрирования Windows 5 20-05-2011 01:22
CMD/BAT - [решено] Определение атрибута файла & проверка наличия процесса user_123 Скриптовые языки администрирования Windows 10 19-11-2010 16:15




 
Переход