Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Убить процесс, только если он запущен (http://forum.oszone.net/showthread.php?t=318940)

Sisin 19-09-2016 14:58 2670168

Убить процесс, только если он запущен
 
После выключения браузера выполняется команда:
/C taskkill /f /t /im USDownloader.exe

Но если USDownloader.exe не запущен, то появляется сообщение. Как сделать, чтобы команда выполнялась, только если USDownloader.exe запущен?
Команда нужна именно для консоли, а не в виде bat или cmd.

sov44 19-09-2016 15:27 2670184

Код:

tasklist | find /i "USDownloader.exe" && taskkill /f /im "USDownloader.exe"

Sisin 19-09-2016 15:42 2670188

Чего-то не работает. Запускаю, но ничего не происходит.

Iska 19-09-2016 16:47 2670202

Sisin, тогда рассказывайте, что Вы понимаете под «консолью», и как именно Вы запускаете.

Sisin 19-09-2016 17:01 2670211

Доперло.

Код:

/C tasklist | find /i "USDownloader.exe" && taskkill /f /t /im USDownloader.exe

Iska 19-09-2016 17:58 2670230

Код:

/C 2>&1 >nul taskkill /f /t /im USDownloader.exe

Sisin 20-09-2016 10:47 2670411

Цитата:

Цитата Iska
/C 2>&1 >nul taskkill /f /t /im USDownloader.exe »

Красиво!!! :clapping:

PS: Iska, не окажете еще любезность, как очистить папку от всего содержания (в папке есть и файлы, и другие папки), оставив саму папку, командой в одну строку?

Iska 20-09-2016 11:15 2670423

Цитата:

Цитата Sisin
как очистить папку от всего содержания (в папке есть и файлы, и другие папки), оставив саму папку, командой в одну строку? »

Никак. Но можно вызвать такой пакетный файл.

Sisin 20-09-2016 11:29 2670428

Цитата:

Цитата Iska
Никак. Но можно вызвать такой пакетный файл. »

А нельзя как-нибудь пакетный файл выровнить в одну строку и запустить через командную строку?
Может можно сделать так, чтобы через командную строку создавался bat файл с нужным содержанием, запускался, выполнялся, а потом удалялся???

Iska 20-09-2016 12:59 2670453

Ну. попробуйте как-нибудь так (не проверялось):
Код:

/e:on /v:on /c 2>nul pushd "Путь к папке" && 2>nul (rmdir /s /q "Путь к папке" & popd)
Опробуете — отпишитесь.

Sisin 20-09-2016 13:26 2670465

Цитата:

Цитата Iska
Опробуете — отпишитесь. »

Шикарно!!! А как прописать несколько папок, чтобы не дублировать команду. Пути относительные, без кавычек.

Iska 20-09-2016 14:57 2670498

Боюсь, что никак. Токмо дублировать:
Код:

/e:on /v:on /c 2>nul pushd "Путь к папке" && 2>nul (rmdir /s /q "Путь к папке" & popd) & 2>nul pushd "Путь к папке2" && 2>nul (rmdir /s /q "Путь к папке2" & popd)

Sisin 20-09-2016 15:20 2670506

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

Iska 20-09-2016 15:57 2670516

Не проверялось. Попробую посмотреть на досуге.

Sisin 20-09-2016 16:15 2670518

Пальцем в небо... Вроде работает...

Код:

/e:on /v:on /c 2>nul pushd %1 && 2>nul (rmdir /s /q 34 & popd) & (rmdir /s /q 12 & popd)

Iska 20-09-2016 17:07 2670548

Sisin, будет удалено не содержимое папок 34 и 12, а они сами. И что у Вас означает %1 в данном контексте?

Sisin 21-09-2016 10:29 2670714

Цитата:

Цитата Iska
Sisin, будет удалено не содержимое папок 34 и 12, а они сами. »

Но
Код:

/e:on /v:on /c 2>nul pushd "Путь к папке" && 2>nul (rmdir /s /q "Путь к папке" & popd)
также удаляет папку...

Цитата:

Цитата Iska
И что у Вас означает %1 в данном контексте? »

Наверное, все папки в папке...

Iska 21-09-2016 11:23 2670738

Цитата:

Цитата Iska
Не проверялось. Попробую посмотреть на досуге. »

Проверил. Удаляется первая папка. Связано с хитрой логикой работы командного процессора с кавычками в командной строке. Попробуйте так (пути, естественно, будут Вашими):
Код:

/e:on /v:on /c "2>nul pushd "R:\00 01" && 2>nul (rmdir /s /q "R:\00 01" & popd) & 2>nul pushd "R:\00 02" && 2>nul (rmdir /s /q "R:\00 02" & popd) & 2>nul pushd "R:\00 03" && 2>nul (rmdir /s /q "R:\00 03" & popd)"

Sisin 21-09-2016 12:03 2670761

Цитата:

Цитата Iska
Попробуйте так »

Не работает.


Iska 21-09-2016 12:31 2670773

Sisin, дабы работало непосредственно в командной строке — ручками добавляйте вызов командного процессора "%comspec%" в начале указанного кода (что, надо полагать, самостоятельно делает некое не указанное приложение в:
Цитата:

Цитата Sisin
После выключения браузера выполняется команда:
/C taskkill /f /t /im USDownloader.exe »

).

Sisin 21-09-2016 12:37 2670777

Благодарю)

Цитата:

Цитата Iska
надо полагать, самостоятельно делает некое неуказанное приложение »

Это я криво вырезал, должно было быть с "%windir%\system32\cmd.exe".

Код:

/e:on /v:on /c "2>nul pushd "R:\00 01" && 2>nul (rmdir /s /q "R:\00 01" & popd) & 2>nul pushd "R:\00 02" && 2>nul (rmdir /s /q "R:\00 02" & popd) & 2>nul pushd "R:\00 03" && 2>nul (rmdir /s /q "R:\00 03" & popd)"
Я правильно понимаю, что если подставить относительные пути, то работать не будет?? (У меня не сработало с относительными путями)
Так
Код:

/e:on /v:on /c "2>nul pushd 12 && 2>nul (rmdir /s /q 12 & popd) & 2>nul pushd 34 && 2>nul (rmdir /s /q 34 & popd) & 2>nul pushd 56 && 2>nul (rmdir /s /q 56 & popd)"

Iska 21-09-2016 19:13 2670923

Цитата:

Цитата Sisin
Это я криво вырезал, должно было быть с "%windir%\system32\cmd.exe". »

Тогда лучше использовать «"%comspec%"».

Цитата:

Цитата Sisin
Я правильно понимаю, что если подставить относительные пути, то работать не будет?? (У меня не сработало с относительными путями)
Так »

Относительные пути… Относительно чего?! Как у Вас организован запуск браузера?

Sisin 22-09-2016 10:39 2671073

Это команда нужна для кнопки выхода портабельной Opera 12.18. Я хочу, чтобы при выходе очищались папки profile\opcache, profile\pstorage, profile\cache.

Соответственно, относительными путями являются: profile\opcache, profile\pstorage, profile\cache.

Iska 23-09-2016 13:38 2671400

Покажите ссылку на её загрузку, опишите создание кнопки.

Sisin 26-09-2016 10:52 2672237

Цитата:

Цитата Iska
Покажите ссылку на её загрузку, опишите создание кнопки. »

В файле standard_toolbar.ini в раздел [Document Toolbar.content] добавил в одну строчку:

Код:

Button18, "Clear visited history"=Clear visited history, , , "Выход без истории и кеша", "Close widget" & Clear disk cache & Execute program, "cmd.exe","/C 2>&1 >nul taskkill /f /t /im USDownloader.exe & del /q /a:-r profile\icons\*.* & del /q /a:-r USDownloader\USDownloader.lst*.bak & /e:on /v:on /c 2>nul pushd %1 && 2>nul (rmdir /s /q profile\opcache & popd) & (rmdir /s /q profile\pstorage & popd) & (rmdir /s /q profile\cache & popd)" & Exit
вот и кнопка.

Iska 26-09-2016 11:34 2672248

Sisin, ссылку приведите на загрузку Вашей:
Цитата:

Цитата Sisin
портабельной Opera 12.18. »

чтобы мы вели речь об одном и том же.

Sisin 26-09-2016 13:18 2672308

Цитата:

Цитата Iska
мы вели речь об одном и том же. »

http://ftp.opera.com/pub/opera/win/1..._Setup_x64.exe

А какая разница?

Iska 26-09-2016 14:24 2672328

Цитата:

Цитата Sisin
А какая разница? »

Всё это нужно для того, чтобы я мог наиболее точно воспроизвести Вашу ситуацию.

Установил. Добавил согласно Вашему описанию:
Скрытый текст

Что дальше? Где её искать?

Sisin 26-09-2016 14:49 2672341

Цитата:

Цитата Iska
Что дальше? Где её искать? »

Оформление-Кнопки-Мои кнопки

Iska 26-09-2016 15:15 2672351

Вот я про то ж:
Скрытый текст

Ибо тут пусто.

Sisin 26-09-2016 16:44 2672372

У меня так:


Iska 27-09-2016 08:37 2672585

Я понимаю, что у Вас «так». Но Вы мне что-то совсем-совсем не из той оперы не то рассказываете. В той версии Opera, ссылку на которую Вы мне привели, пользовательские кнопки хранятся в разделе [Customize Toolbar Custom.content] файла .\profile\toolbar\standard_toolbar.ini. Это раз. Второе — Вы опять играетесь не с тем кодом, который я привёл, опять у Вас %1.

Текущим каталогом для команды является тот же каталог, что и для приложения. То есть — был текущим каталогом c:\Temp при запуске Opera — он и останется текущим. Надеяться на то, что текущим каталогом всегда будет каталог, где находится исполняемый файл Opera, никак нельзя.

То есть. На текущий момент мы имеем две проблемы:
  1. Невозможность «прозрачного» определения каталога переносной версии Opera. Есть длинный и не вполне корректный способ.
  2. Возможность использования кавычек внутри файла «.\profile\toolbar\standard_toolbar.ini». Я не смог найти внятного технического описания формата.

Sisin 27-09-2016 10:57 2672626

Цитата:

Цитата Iska
Второе — Вы опять играетесь не с тем кодом, который я привёл, опять у Вас %1. »

Потому что
Код:

/e:on /v:on /c "2>nul pushd profile\opcache && 2>nul (rmdir /s /q profile\opcache & popd) & 2>nul pushd profile\pstorage && 2>nul (rmdir /s /q profile\pstorage & popd) & 2>nul pushd profile\cache && 2>nul (rmdir /s /q profile\cache & popd)"
не работает или надо прописывать полный путь к папкам, чтобы работало.
Код:

/e:on /v:on /c 2>nul pushd %1 && 2>nul (rmdir /s /q profile\opcache & popd) & (rmdir /s /q profile\pstorage & popd) & (rmdir /s /q profile\cache & popd)
работает без прописывания полного пути.

Цитата:

Цитата Iska
То есть — был текущим каталогом c:\Temp при запуске Opera — он и останется текущим. Надеяться на то, что текущим каталогом всегда будет каталог, где находится исполняемый файл Opera, никак нельзя. »

Это я не совсем понял.

Iska 27-09-2016 17:16 2672736

Цитата:

Цитата Sisin
работает…»

Задайте себе вопросы. Чему равен %1? Как отрабатывают множественные popd с одним сохранённым pushd каталогом? И как ведут себя в этом случае rmdir'ы?

Sisin 28-09-2016 10:58 2672951

Цитата:

Цитата Iska
Задайте себе вопросы. Чему равен %1? Как отрабатывают множественные popd с одним сохранённым pushd каталогом? И как ведут себя в этом случае rmdir'ы? »

Полностью с Вами согласен, что это неправильно и я нашел решение... буду не дублировать команду в одной строке, а несколько раз вызывать cmd.


Время: 23:29.

Время: 23:29.
© OSzone.net 2001-