Polizzay Опубликовано 5 февраля, 2008 Жалоба Поделиться Опубликовано 5 февраля, 2008 С помощью системной утилиты taskkill. Описание и примеры использования, как обычно, можно получить запуском taskkill -? Пробовал в батнике, не отрабатывает почему то... Пробовал так (сокращенно): %a%\ххх.exe /off taskkill /f /im ххх.exe /t Мож что не так делаю? Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 5 февраля, 2008 Жалоба Поделиться Опубликовано 5 февраля, 2008 В вызове taskkill вроде бы все правильно написано. Есть, кстати, сторонние утилиты, которые делают то же самое. А вот bat-файл, похоже, неправильно написан. В таком виде он ждет завершения xxx.exe, чтобы выполнить taskkill. Вызов xxx.exe надо делать через команду start. Кстати, если в пути к xxx.exe есть пробелы, у нее особый синтаксис заключения имен с пробелами в кавычки, но, судя по примеру, пробелов в именах нет, так что на этом задерживаться нет смысла. Но даже со start в таком bat-файле программа xxx.exe может не успеть сработать до того, как taskkill ее вырубит, надо вводить между ними задержку. Все это уже обсуждалось в этой теме. Попробуй такой bat-файл: start %a%\ххх.exe /off ping -n 2 localhost > nul taskkill /f /im ххх.exe /t Ссылка на комментарий Поделиться на другие сайты Поделиться
Polizzay Опубликовано 5 февраля, 2008 Жалоба Поделиться Опубликовано 5 февраля, 2008 Попробуй такой bat-файл: start %a%\ххх.exe /off ping -n 2 localhost > nul taskkill /f /im ххх.exe /t Спасибо, так вроде запускается, на сети только завтра проверю. А можно сделать таким образом, чтобы в результате исполнения батника проверялось, доступен ли файл для удаления? Если недоступен, то запускается вышеуказанная процедура, если доступен, то просто удаляется. Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 5 февраля, 2008 Жалоба Поделиться Опубликовано 5 февраля, 2008 В этом случае батник может выглядеть так: del %a%\ххх.exe if not exist %a%\ххх.exe goto m start %a%\ххх.exe /off ping -n 2 localhost > nul taskkill /f /im ххх.exe /t :m Ссылка на комментарий Поделиться на другие сайты Поделиться
Polizzay Опубликовано 6 февраля, 2008 Жалоба Поделиться Опубликовано 6 февраля, 2008 В этом случае батник может выглядеть так: del %a%\ххх.exe if not exist %a%\ххх.exe goto m start %a%\ххх.exe /off ping -n 2 localhost > nul taskkill /f /im ххх.exe /t :m Большое человеческое спасибо, как опробую - отпишусь Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 6 февраля, 2008 Жалоба Поделиться Опубликовано 6 февраля, 2008 Вот только я не совсем понял, какой файл надо удалять. В данном случае удаляется xxx.exe. Если надо удалять другой файл, строку надо соответственно изменить. Ссылка на комментарий Поделиться на другие сайты Поделиться
Вито Опубликовано 5 апреля, 2008 Жалоба Поделиться Опубликовано 5 апреля, 2008 Помогите в удалении тектовых и временых файлов с расширением (.txt) (.tmp) Пример : ============= @echo off del c:\upload\*.txt del d:\upload\*.tmp ============= Так же хотелось бы удалять такие файлы из подпапок папки, не указывая имя подпапки например кодом %a% ======================= папка -> c:\upload\ подпапка(и) -> c:\upload\folder1\ c:\upload\folder2\ ======================= Так как если кто-нибудь в сети создаст в общедоступной папке (\\fileserver\upload\) подпапку со своим именем.. то придётся указывать путь к этой папке(( Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 5 апреля, 2008 Жалоба Поделиться Опубликовано 5 апреля, 2008 (изменено) c:cd c:\uploaddel /f /s *.tmpdel /f /s *.txt Изменено 5 апреля, 2008 пользователем Тролль Ссылка на комментарий Поделиться на другие сайты Поделиться
Вито Опубликовано 6 апреля, 2008 Жалоба Поделиться Опубликовано 6 апреля, 2008 Выручил!!! спасиба :blush2: У меня еще такой вопрос.. как батником удалить созданые юзерами ярлыки и папки под названием (навая папка, новая папка (2), и т.д.) кроме тех которые уже есть.. например: \\fserver\upload - общедоступная сетевая папка \\fserver\upload\films \\fserver\upload\depot \\fserver\upload\ххх$ \\fserver\upload\music \\fserver\upload\games c:\upload\films c:\upload\depot c:\upload\ххх$ c:\upload\music c:\upload\games =================== ниже проблемы ================== c:\upload\films\konstantine.avi c:\upload\films\lost 4.avi c:\upload\films\новая папка c:\upload\films\новая папка (2) c:\upload\films\Ярлык для xxx c:\upload\films\Ярлык для lost 4.avi ================================================ Ссылка на комментарий Поделиться на другие сайты Поделиться
shuttle2003 Опубликовано 6 апреля, 2008 Жалоба Поделиться Опубликовано 6 апреля, 2008 Добрый день. Я новичок. У меня такой вопрос: Требуется написать bat-файл, который переименовывает, например, xxx.tmp в xxx.exe, а потом этот xxx.exe запустить. Проблема в том, что "xxx" каждый раз меняется, и в следующий раз будет уже "yyy". Нужно чтобы бат-файл запрашивал у меня файл, с которым надо провернуть эту манипуляцию. Спасибо. Ссылка на комментарий Поделиться на другие сайты Поделиться
Maikll Опубликовано 6 апреля, 2008 Жалоба Поделиться Опубликовано 6 апреля, 2008 (изменено) shuttle2003: пишем файл след содержания echo offset name=%1rename %name%.txt %name%.exe%name%.exe Запуск: имя_батника ххх, где ххх-имя файла, котрый нужно переименовать. Вито: У меня еще такой вопрос.. как батником удалить созданые юзерами ярлыки и папки под названием (навая папка, новая папка (2), и т.д.) кроме тех которые уже есть.. можно отобрать по дате создания с помощью forfiles (утилиты из ресурскита) forfiles -p "c:\upload" -m *.lnk -s -d +06.04.2008 -c "CMD /C del @FILE " удаляться все ярлыки созданные позже указанной даты. c папками сложнее...вообще мне кажется их проще запретить создавать чем мучится с удалением :) Изменено 6 апреля, 2008 пользователем Maikll Ссылка на комментарий Поделиться на другие сайты Поделиться
shuttle2003 Опубликовано 7 апреля, 2008 Жалоба Поделиться Опубликовано 7 апреля, 2008 shuttle2003: пишем файл след содержания echo offset name=%1rename %name%.txt %name%.exe%name%.exe Запуск: имя_батника ххх, где ххх-имя файла, котрый нужно переименовать. Вито: можно отобрать по дате создания с помощью forfiles (утилиты из ресурскита) forfiles -p "c:\upload" -m *.lnk -s -d +06.04.2008 -c "CMD /C del @FILE " удаляться все ярлыки созданные позже указанной даты. c папками сложнее...вообще мне кажется их проще запретить создавать чем мучится с удалением :blink: :blink: Спасибо огромное! Работает. А откуда информацию по командам батника можно взять? Для саморазвития? Ссылка на комментарий Поделиться на другие сайты Поделиться
Maikll Опубликовано 7 апреля, 2008 Жалоба Поделиться Опубликовано 7 апреля, 2008 shuttle2003: Как ни странно, в самой windows :) Пуск - Выполнить - cmd - help. Для детального описания введи имя_команды /? Ну и можно почитать например эту статью Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 7 апреля, 2008 Жалоба Поделиться Опубликовано 7 апреля, 2008 shuttle2003: Или еще справку Windows по командам, как ее проще всего вызвать, обсуждали тут. Ссылка на комментарий Поделиться на другие сайты Поделиться
shuttle2003 Опубликовано 10 апреля, 2008 Жалоба Поделиться Опубликовано 10 апреля, 2008 Maikll: Тролль: :) :) :) Залип. :) Ссылка на комментарий Поделиться на другие сайты Поделиться
Maikll Опубликовано 1 мая, 2008 Жалоба Поделиться Опубликовано 1 мая, 2008 Имеем батник, который в процессе работы последовательно берет необходимые данные из текстового файла вида 123456321654 789542 123657 954862 хотелось бы прикрутить к нему удаление каждой "отработанной" сторочки, т.е. необходим поиск и удаление в текстовом файле, желательно без оставления пустых сторок. Пример, обработалась первая строка - удалилась, обработалась вторая - удалилась и т.д. Чем бы такое реализовать? :) Ссылка на комментарий Поделиться на другие сайты Поделиться
Wlad Опубликовано 2 мая, 2008 Жалоба Поделиться Опубликовано 2 мая, 2008 (изменено) Возник у меня вопросик к специалистам по составлению батников и скриптов. Висит у меня в автозагрузке скриптик небольшой вот такого вида: Set shell = Wscript.CreateObject("Wscript.Shell")wscript.sleep 150000shell.run "C:\PROGRA~1\THEBAT!\THEBAT.EXE /NOLOGO" Что он делает, думаю объяснять не надо. Понадобилось мне от него еще вот что: нужно открывать после бата файлик (или несколько) формата excel. Вроде не сложно, но проблема в том, что файлы находятся на других компах в сети и имена у них мало того, что русскими буквами, так еще и с пробелами. Поэтому простое добавление строчки shell.run "C:\Progra~1\Micros~2\OFFICE11\EXCEL.exe \\Comp\dir1\dir2\Имя файла с пробелами.xls" не прокатило. Помогите побороть строптивый скрипт. ЗЫ: заключение имени файла в кавычки не помогает. ЗЗЫ: самое обидное, что из командной строки все работает Изменено 2 мая, 2008 пользователем Wlad Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 2 мая, 2008 Жалоба Поделиться Опубликовано 2 мая, 2008 Maikll: Из файла начало или середину прямо не вырезают, файл просматривается последовательно, и при этом из него можно что-то по ходу просмотра переписывать в другой файл. В данном случае то, что осталось необработанным, видимо, можно переписать в другой файл. Wlad:Запись типа "Имя файла с пробелами.xls" в VBS не прокатит. Должно прокатить короткое имя типа "Имяфай~1.xls" (в коротких именах пробелы выкидываются). Или можно запускать из VBS батник с длинным именем внутри. Ссылка на комментарий Поделиться на другие сайты Поделиться
Maikll Опубликовано 3 мая, 2008 Жалоба Поделиться Опубликовано 3 мая, 2008 (изменено) Тролль: я немного по другому реализовал. Каждую отработанную сторочку при отсутствии ошибок пишу в лог и при необходимоти сравниваю оба файла через fc с последующей перезаписью исходного файла результатом. В принципе это то, что мне нужно, но есть одна загвоздка - в процесс сравнения к результату добавляются строки типа Сравнение файлов 1.txt и 2.TXT***** 1.txt 123456 321654 789542 123657 954862 ***** 2.TXT ***** соответственно первые и последние две строки мне не нужны. Как от ниx оптимальнее избавится? Мне пока в голову приходит только нечто вроде построчного чтения с проверкой каждой строки for /f "tokens=*" %%a in ('more^<3.txt') do call :_replace %%agoto eof:_replaceset j=0set i=%*if "%i%"=="Сравнение файлов 1.txt и 2.TXT"else (if "%i%"=="***** 1.txt" else ( if not "%i%"=="***** 2.TXT" else ( if not "%i%"=="*****" else ( echo %i% > result.txtgoto eof ) ))) Изменено 3 мая, 2008 пользователем Maikll Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 3 мая, 2008 Жалоба Поделиться Опубликовано 3 мая, 2008 Maikll: Я тоже не вижу пути проще использования FOR. Если файл с результатом работы fc назвать t.txt, то помещенная затем в батнике команда del tt.txt && for /f "usebackq skip=3" %%i in (`find /V "*****" t.txt`) do echo %%i>>tt.txt выкинет из этого файла ненужные строки и запишет отфильтрованный результат в файл tt.txt Ссылка на комментарий Поделиться на другие сайты Поделиться
Wlad Опубликовано 19 мая, 2008 Жалоба Поделиться Опубликовано 19 мая, 2008 А у меня еще вопросик к программистам: можно ли написать скрипт, который будет в определенное время запускать нужную программу, вводить имя пользователя/пароль, нажимать на нужные кнопки и закрывать программку? Или это уже слишком сложно для скрипта? ЗЫ: программка самописная, очень простенькая (весит 2метра), работает по сети (на локальном компе установлена клиентская версия, которая общается с сервером). Ссылка на комментарий Поделиться на другие сайты Поделиться
Maikll Опубликовано 19 мая, 2008 Жалоба Поделиться Опубликовано 19 мая, 2008 Wlad: посмотри в сторону InqSoft Sign 0f Misery Вроде все что ты хочешь в ней реализуемо. Ссылка на комментарий Поделиться на другие сайты Поделиться
Wlad Опубликовано 29 мая, 2008 Жалоба Поделиться Опубликовано 29 мая, 2008 Maikll: Все сделал, только не твоей программкой, а AutoIt 3.2 - она умеет все, что мне нужно было и даже больше. Ссылка на комментарий Поделиться на другие сайты Поделиться
obana obana Опубликовано 6 июня, 2008 Жалоба Поделиться Опубликовано 6 июня, 2008 Можно с помощью батника реализовать следующее: "Если в системе появляется определённый процесс и не завершается сам в течении 5 секунд, то батник должен его завершить." и если можно, то как? Ссылка на комментарий Поделиться на другие сайты Поделиться
Maikll Опубликовано 7 июня, 2008 Жалоба Поделиться Опубликовано 7 июня, 2008 поскольку процесс появляется в неизвестное время, батником его "ловить" затруднительно, поэтому проще будет воспользоваться спецутилитами, например nncron, она позволит выполнить это с легкостью вот примерный кронтаб для этого WatchProc: "%process%"5000 PAUSERule: PROC-EXIST: "%process%" Action:KILL: "%process%" где %process% - имя процесса, который отслеживаем. при его появлении выдерживается пауза 5 сек и если он еще существует, то убиваем его. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения