Перейти к содержанию
СофтФорум - всё о компьютерах и не только

Управление из командной строки


Рекомендуемые сообщения

С помощью системной утилиты taskkill. Описание и примеры использования, как обычно, можно получить запуском taskkill -?

Пробовал в батнике, не отрабатывает почему то...

Пробовал так (сокращенно):

%a%\ххх.exe /off

taskkill /f /im ххх.exe /t

Мож что не так делаю?

Ссылка на комментарий
Поделиться на другие сайты

  • Ответов 589
  • Создана
  • Последний ответ

Топ авторов темы

В вызове 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

Ссылка на комментарий
Поделиться на другие сайты

Попробуй такой bat-файл:

start %a%\ххх.exe /off

ping -n 2 localhost > nul

taskkill /f /im ххх.exe /t

Спасибо, так вроде запускается, на сети только завтра проверю.

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

Ссылка на комментарий
Поделиться на другие сайты

В этом случае батник может выглядеть так:

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

Ссылка на комментарий
Поделиться на другие сайты

В этом случае батник может выглядеть так:

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

Большое человеческое спасибо, как опробую - отпишусь

Ссылка на комментарий
Поделиться на другие сайты

Вот только я не совсем понял, какой файл надо удалять. В данном случае удаляется xxx.exe. Если надо удалять другой файл, строку надо соответственно изменить.

Ссылка на комментарий
Поделиться на другие сайты

  • 1 месяц спустя...

Помогите в удалении тектовых и временых файлов с расширением (.txt) (.tmp)

Пример :

=============

@echo off

del c:\upload\*.txt

del d:\upload\*.tmp

=============

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

=======================

папка -> c:\upload\

подпапка(и) ->

c:\upload\folder1\

c:\upload\folder2\

=======================

Так как если кто-нибудь в сети создаст в общедоступной папке (\\fileserver\upload\) подпапку со своим именем.. то придётся указывать путь к этой папке((

Ссылка на комментарий
Поделиться на другие сайты

Выручил!!! спасиба :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

================================================

Ссылка на комментарий
Поделиться на другие сайты

Добрый день.

Я новичок.

У меня такой вопрос:

Требуется написать bat-файл, который переименовывает, например, xxx.tmp в xxx.exe, а потом этот xxx.exe запустить. Проблема в том, что "xxx" каждый раз меняется, и в следующий раз будет уже "yyy". Нужно чтобы бат-файл запрашивал у меня файл, с которым надо провернуть эту манипуляцию.

Спасибо.

Ссылка на комментарий
Поделиться на другие сайты

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 папками сложнее...вообще мне кажется их проще запретить создавать чем мучится с удалением :)

Изменено пользователем Maikll
Ссылка на комментарий
Поделиться на другие сайты

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:

Спасибо огромное! Работает.

А откуда информацию по командам батника можно взять? Для саморазвития?

Ссылка на комментарий
Поделиться на другие сайты

shuttle2003: Как ни странно, в самой windows :) Пуск - Выполнить - cmd - help. Для детального описания введи имя_команды /?

Ну и можно почитать например эту статью

Ссылка на комментарий
Поделиться на другие сайты

  • 3 недели спустя...

Имеем батник, который в процессе работы последовательно берет необходимые данные из текстового файла вида

123456

321654

789542

123657

954862

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

Пример, обработалась первая строка - удалилась, обработалась вторая - удалилась и т.д.

Чем бы такое реализовать? :)

Ссылка на комментарий
Поделиться на другие сайты

Возник у меня вопросик к специалистам по составлению батников и скриптов.

Висит у меня в автозагрузке скриптик небольшой вот такого вида:

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" не прокатило.

Помогите побороть строптивый скрипт.

ЗЫ: заключение имени файла в кавычки не помогает.

ЗЗЫ: самое обидное, что из командной строки все работает

Изменено пользователем Wlad
Ссылка на комментарий
Поделиться на другие сайты

Maikll:

Из файла начало или середину прямо не вырезают, файл просматривается последовательно, и при этом из него можно что-то по ходу просмотра переписывать в другой файл. В данном случае то, что осталось необработанным, видимо, можно переписать в другой файл.

Wlad:Запись типа "Имя файла с пробелами.xls" в VBS не прокатит. Должно прокатить короткое имя типа "Имяфай~1.xls" (в коротких именах пробелы выкидываются). Или можно запускать из VBS батник с длинным именем внутри.

Ссылка на комментарий
Поделиться на другие сайты

Тролль: я немного по другому реализовал. Каждую отработанную сторочку при отсутствии ошибок пишу в лог и при необходимоти сравниваю оба файла через 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  ) )))
Изменено пользователем Maikll
Ссылка на комментарий
Поделиться на другие сайты

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

Ссылка на комментарий
Поделиться на другие сайты

  • 3 недели спустя...

А у меня еще вопросик к программистам: можно ли написать скрипт, который будет в определенное время запускать нужную программу, вводить имя пользователя/пароль, нажимать на нужные кнопки и закрывать программку? Или это уже слишком сложно для скрипта?

ЗЫ: программка самописная, очень простенькая (весит 2метра), работает по сети (на локальном компе установлена клиентская версия, которая общается с сервером).

Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...

Maikll:

Все сделал, только не твоей программкой, а AutoIt 3.2 - она умеет все, что мне нужно было и даже больше.

Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...

Можно с помощью батника реализовать следующее: "Если в системе появляется определённый процесс и не завершается сам в течении 5 секунд, то батник должен его завершить." и если можно, то как?

Ссылка на комментарий
Поделиться на другие сайты

поскольку процесс появляется в неизвестное время, батником его "ловить" затруднительно, поэтому проще будет воспользоваться спецутилитами, например nncron, она позволит выполнить это с легкостью

вот примерный кронтаб для этого

WatchProc: "%process%"5000 PAUSERule: PROC-EXIST: "%process%" Action:KILL: "%process%" 

где %process% - имя процесса, который отслеживаем.

при его появлении выдерживается пауза 5 сек и если он еще существует, то убиваем его.

Ссылка на комментарий
Поделиться на другие сайты

Гость
Эта тема закрыта для публикации ответов.
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу



×
×
  • Создать...