![]() |
Помощь со скриптом - проверка наличия файла и процессов
Товарищи, помогите, пожалуйста, написать скрипт для Windows XP.
Задача: проверить наличие файла test1: 1) если файл есть, то ничего не делать. Выход. 2) если файла нет, то: 2.1) проверить наличие процесса proc1: Если есть - завершить, если нет - ничего не делать. 2.2) проверить наличие процесса proc2: Если есть - завершить, если нет - ничего не делать. 2.3) скопировать test1.a --> test1, запустить proc1 (тот сам запустит proc2, потому этого достаточно). Я, к сожалению, в скриптах не силен. В Linux простые скрипты мне даются, а в Windows пока никак. Буду благодарен за помощь. Спасибо. |
|
Спасибо за ваш ответ.
Уточняю. Цитата Iska: Проверить наличие файла где? » в том же самом каталоге, где будет скрипт для удобства и т.п., допустим, все лежит в D:\script1 Цитата Iska: А если нет test1.a? » лучше тогда, конечно, что-то типа touch test1 Цитата Iska: Откуда запустить? » всё в пределах одного каталога. Если можно использовать глобальные переменные, то тогда там можно пути прописать. |
Цитата:
Цитата:
|
Цитата:
Предлагаю немного логику поменять. Убрать скопировать test1.a --> test1 и создать test1 Т.е. если файла test1 не существует, то создадим его. Как есть, без расширений и т.п. в Linux это делает команда touch, как в Windows не знаю. |
Упущен вариант с наличием НЕСКОЛЬКИХ одноименных процессов. Пока рыбы набросал...
Код:
if not exist test1 ( |
DimmKo, вообще-то touch делает немного другое. Ну, да ладно.
Код:
@echo off |
Elven, спасибо большое... сейчас попробую на тестовой машине проверить.
Цитата:
Мне сейчас хотя бы понимать, что файл есть или нет, и от этого уже думать. Скрытый текст
Конечно, у меня вощникла мысль, расшарить каталог, подцепить его в linux, и там сделать проверку наличия файла. Но хотелось бы штатными средствами это решить. Цитата:
Спасибо за помощь. Сейчас проверю. |
Iska, огромное спасибо за Вашу работу (скрипт).
Поставил в планировщик - всё супер. Скажите, пожалуйста, можно ли добавить сюда логирование? Ну что бы он в текстовый документ писал что он делает? И еще, могу ли я использовать данный скрипт (со ссылкой на эту тему и на вас, как автора) в написании заметки? Спасибо. |
Цитата:
Цитата:
|
Цитата:
Не могли бы Вы добавить, пожалуйста? Как пример: - файл есть - выхожу, - файла нет: -- убиваю процесс такой-то, -- убиваю процесс такой-то, -- создаю файл, -- запускаю процесс такой-то. Соответственно дата и время. Хотя бы понимать как часто пропадает файл. Спасибо. |
Цитата:
Код:
@echo off Код:
"%comspec%" /c">>"Output.txt" 2>&1 "C:\Мои проекты\0157\0001.cmd"" |
Iska, класс...
Интересно, в bash можно сделать функцию и просто ее вставлять где надо, а тут такое же возможно. Или это уже PowerShell начинается. Большое спасибо! |
Цитата:
|
Iska, извините, уезжал.
я вот так делаю (не претендую на правильность) функция (bash) для логирования
Код:
Потом этот F_LOG везде втыкиваю где надо и всё на этом. Это если в консоль. Так, конечно, делаю перенаправление ">>" в файл. |
DimmKo, спасибо, ясно.
В пакетных файлах ОС Windows такого нет. В самом пакетном файле могут использоваться «как бы» подпрограммы/процедуры (наличествует возможность передачи параметров, возврата значений через обращение к переменным окружения вызвавшего контекста, локальные переменные окружения). Кроме того, возможно использование макроподстановок. Но вот именно такого — нет. Подобное (и многое, многое другое) наличествует в новом командном языке ОС Windows — PowerShell. |
Iska, спасибо за разъяснение.
Буду пытаться вникнуть в PowerShell. Правда, давно видел его синтаксис, и как-то мне показалось, что он сложный уж очень... Кстати, скрипт работает на ура. Ну, по крайней мере, я уже какое время не получаю дурацкие смс, что что-то там не работает (файл когда удаляется, то при старте программы ошибка, т.к. этого файла нет. Для чего он нужен - хз, те кто писал, уже давно уволились). Смотрю в лог, что-то он туда пишет... красотища! Вот еще раз Вам спасибо! |
DimmKo, рад был помочь.
|
Время: 16:15. |
Время: 16:15.
© OSzone.net 2001-