Ru-Board.club
← Вернуться в раздел «Microsoft Windows»

» Задачи на bat-файлах 8

Автор: older
Дата сообщения: 06.07.2010 15:31
подскажите, как из одного батника завершить работу другого батника?
Автор: res2001
Дата сообщения: 06.07.2010 15:39
older
смотри в сторону taskkill /?
Автор: older
Дата сообщения: 06.07.2010 15:44
что-то не получается, пишет :
Код: Ошибка: Не удается найти процесс "xxxxx.cmd".
Автор: NIKZZZZ
Дата сообщения: 06.07.2010 15:48
older

Цитата:
подскажите, как из одного батника завершить работу другого батника?

Не знаю, насколько это реально, taskkill может убить процесс, но как определить нужный? Они для любого батника cmd.exe.


Автор: wolf0425
Дата сообщения: 06.07.2010 15:51

Цитата:
Не знаю, насколько это реально, taskkill может убить процесс, но как определить нужный? Они для любого батника cmd.exe.
определить нужный можно или по специально установленному заголовку окна (тогда выбрать самим taskkill ) или по ключам командной строки (предварительно, и передавая taskkill уже нужный pid)
Автор: NIKZZZZ
Дата сообщения: 06.07.2010 15:53
wolf0425

Цитата:
передавая taskkill уже нужный pid

Так то понятно, вопрос как это сделать средствами батника?
Автор: older
Дата сообщения: 06.07.2010 15:55
res2001
wolf0425
NIKZZZZ

нет, все нашел
сделал поиск по заголовку окна:

Код: taskkill.exe /FI "WINDOWTITLE eq bla-bla-bla...*"
Автор: NIKZZZZ
Дата сообщения: 06.07.2010 15:58
В свое время я решал эту задачу так - сопировал cmd.exe с свой каталог, переименовывал его, и через него запускал через него нужный батник, после чего убивал переименованный cmd.exe.
Автор: res2001
Дата сообщения: 06.07.2010 17:10
NIKZZZZ

Цитата:
В свое время я решал эту задачу так - сопировал cmd.exe с свой каталог, переименовывал его, и через него запускал через него нужный батник, после чего убивал переименованный cmd.exe.

как писал wolf0425, можно в батнике менять заголовок окна командой title и тогда taskkillом нормально найдется нужный процесс.
Автор: wolf0425
Дата сообщения: 06.07.2010 17:14

Цитата:
Так то понятно, вопрос как это сделать средствами батника?
какие видятся проблемы?
вот например как найти pid "своего" cmd
(если батник запускался отдельным окном, а не руками в окне консоли. но это просто пример поиска нужного по commandline )

Код: wmic process where "name="cmd.exe"" get commandline,processid | find /i "%~f0" 1>file.tmp
set /p pid=<file.tmp
set /a pid = %pid:~-12%
Автор: NIKZZZZ
Дата сообщения: 06.07.2010 17:51
res2001
wolf0425

Цитата:
как писал wolf0425, можно в батнике менять заголовок окна командой title и тогда taskkillом нормально найдется нужный процесс.

Можно, но хочется не отлаживать батник, а сразу получить гарантированный результат. На чужой машине возникает куча проблем, а они нужны?
wmic - можно, конечно, но это уже не батник,
проще vbs скрипты использовать.




Автор: wolf0425
Дата сообщения: 06.07.2010 18:10

Цитата:
wmic - можно, конечно, но это уже не батник,
это ешё почему не батник? именно для использования в батниках wmic и создан.
Цитата:

Можно, но хочется не отлаживать батник, а сразу получить гарантированный результат. На чужой машине возникает куча проблем, а они нужны?
какие такие проблемы на чужой машине, если оба батника - твои?
установить заголовок окна и убить окна по заголовку - эти проблемы помешать не могут, title /? и taskkill /? прочитать после подсказки наверно тоже несложно...


Цитата:
проще vbs скрипты использовать.
тоже вариант, но это - лишние файлы плодить, для чужой машины не комильфо..
Автор: NIKZZZZ
Дата сообщения: 06.07.2010 18:54
wolf0425

Цитата:
какие такие проблемы на чужой машине

Я привык к тому, что система голая, например WinPe. Там есть только cmd.exe, wmic нет.

Цитата:
убить окна по заголовку

Если его сам создаешь.


Автор: us0r
Дата сообщения: 06.07.2010 20:36
А как в CMD работают дескрипторы (создание [3-9], перенаправление, чтение, запись и т.д.). И можно ли в голом CMD использовать каналы (pipe), и как?
Автор: wolf0425
Дата сообщения: 06.07.2010 20:53

Цитата:
Если его сам создаешь.
или если создаешь или если меняешь его заголовок по ходу выполнения батника, проблему так и не вижу если оба батника с собой приносишь.
приносить батник, который будет по каким-то критериям убивать окно с юзеровским батником - было бы действительно стремно. Хотя откуда бы взяться посторонним батникам в winPE - мне ещё более непонятно
Автор: BVV63
Дата сообщения: 07.07.2010 05:59
Приветствую всех. Недавно задавал здесь вопрос, каков максимальных размер переменной. Получил ответ от res2001, что 8 kb. Честно говоря, я ранее предполагал, что существует лимит не на размер переменной, а на размер всего массива переменных (ну, понятно, первый зависит от второго), если не изменяет память, то во времена DOS было именно так. Чисто ради любопыства решил проверить.

Код: @Echo Off
:0
Set A=%A%1
Echo %A%>1
GoTo :0
Автор: yurkesha
Дата сообщения: 07.07.2010 06:39
BVV63
А тебе не кажется странным что количество сиволов в куске
Код: Set A=
Автор: BVV63
Дата сообщения: 07.07.2010 06:53
yurkesha
Нет, почему-то только 9 (проверил, новая переменная "AAAAA", т. е. 5 символов).
Автор: res2001
Дата сообщения: 07.07.2010 07:52
BVV63

Цитата:
Когда батник в консоли завершился с надписью "The inbut line is too long." проверил размер получившегося файла. 8186 b. Т. е., действительно, около 8 kb (8192 b). 6 байт мелкомягкие всё же закроили .

полезный опыт
Автор: Vitaly_Sigov
Дата сообщения: 07.07.2010 09:03
Здравствуйте, уважаемые форумчане.
Подскажите, пожалуйста, как создать папку имя которой будет дата создания файла посредством bat-файла?

Т.е. есть папка - в ней файлы с разными датами создания.
Хотелось бы, чтобы рядом с этими файлами создались папки - имена которых будут даты создания файлов.
Автор: res2001
Дата сообщения: 07.07.2010 09:09
Vitaly_Sigov
Видимо как-то так будет:

Код: for %%a in (*.*) do md %%~da
Автор: wolf0425
Дата сообщения: 07.07.2010 09:21

Цитата:
полезный опыт

кстати у set /p aa=<file - в переменную попадает максимум 1023 байта
Автор: BVV63
Дата сообщения: 07.07.2010 09:33
wolf0425

Цитата:
set /p aa=<file

Ух, ты! Оказывается, можно делать вывод в переменную напрямую, без for. Я, думал ключ /p для другого, для ввода вручную. Очень полезная информация.
Автор: yurkesha
Дата сообщения: 07.07.2010 09:47
BVV63
Ну а теперь давай разберемся что произошло:
- во первых в файле на две единицы меньше чем размер - перевод строки затесался
- во вторых
Код: @ECHO OFF
:0
CLS
ECHO Проблема в SET
SET A=%A%1
CLS
ECHO Проблема в ECHO
ECHO %A%>1
GOTO :0
Автор: mugil_cephalus
Дата сообщения: 07.07.2010 09:49
BVV63

Цитата:
Приветствую всех. Недавно задавал здесь вопрос, каков максимальных размер переменной. Получил ответ от res2001, что 8 kb.

NB
здесь - http://forum.ru-board.com/topic.cgi?forum=5&topic=33080&start=480#11
kostya740 писал

Цитата:
найдено ограничение.
Внутри IF код может быть максимум 3586 строк.
Советую добавить в шапку.

я не проверял и не встречал подобные батники
косвенно по сабжу , но , любопытства ради , к сведению...
Автор: Engraf
Дата сообщения: 07.07.2010 10:03
Здравствуйте,
Интересуют два вопроса:

Можно ли использовать if defined для переменных цикла?
и
Как разобрать строку на подстроки, если заранее не известно кол-во разделителей?
Автор: yurkesha
Дата сообщения: 07.07.2010 10:04
BVV63
И проверочный код на отказ присваивания:
Код: @ECHO OFF
SET /A B=0
:0
SET A=^
%A%^
1
SET /A B+=1
CLS
ECHO %B%
GOTO :0
Автор: res2001
Дата сообщения: 07.07.2010 10:27
Engraf

Цитата:
Можно ли использовать if defined для переменных цикла?

Проверь и нам расскажешь

Цитата:
Как разобрать строку на подстроки, если заранее не известно кол-во разделителей?

ну укажи в "tokens=1-20" к примеру.
Другой вариант, можно написать рекурсивную процедуру, которая вызывает сама себя с остатком неразобранных параметров.
Автор: wolf0425
Дата сообщения: 07.07.2010 11:28

Цитата:
Как разобрать строку на подстроки, если заранее не известно кол-во разделителей?
если разделители стандартные - пробел/табуляция/запятая, то
Код: for %%a in (%var%) do echo %%a
Автор: Engraf
Дата сообщения: 07.07.2010 11:33
res2001
Цитата:
Проверь и нам расскажешь
Дык проверял - не работает Но вдруг это я чего-то не знаю. А то как удобно было бы...

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132

Предыдущая тема: XP не видит второй раздел на съемном USB-HDD


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.