Ru-Board.club
← Вернуться в раздел «Программы»

» Командная строка, батники, сценарии (bat, cmd)

Автор: Elroir
Дата сообщения: 11.02.2007 21:31
Compik
Насколько я понимаю - не получится. С того момента, как запускается win, контроль батнику больше не передается.
Автор: Compik
Дата сообщения: 11.02.2007 21:43
Elroir
Ясно
Спасибо за ответ
Автор: KciNKh
Дата сообщения: 11.02.2007 22:42
Прошу маленькаю консультацию:
когда-то был создан батник для отключения компов в подсети на время сеанса, т.к. использую его в нескольких подсетях, то необходимо определять текущую подсеть - это раз. И второе в некоторых подсетях отсутствуют определенные адресса (были причины их исключить ) и их необходимо исключить из обработки. Интерисует оптимизация готового батника (исключение sed.exe, ну и что кто предложит).

Код:
@echo off
REM set _debug=echo
setlocal enabledelayedexpansion

for /f %%i in ('ipconfig ^| find /i "IP-" ^| sed -r "s/^.*IP-[^:]*:[^\.]*.[^\.]*.([^\.]*).[^\.]*/\1/"') do set net=%%i

title Local Net: %net%
echo Local Net: %net%
for /L %%c in (1,1,26) do (
if _%net%==_32 if %%c==13 goto next else goto step
if _%net%==_39 if %%c==25 goto end else goto step
if _%net%==_56 if %%c==26 goto end else goto step
if _%net%==_59 if %%c==13 goto next else goto step
if _%net%==_59 if %%c==25 goto end else goto step
:step
REM echo step %%c
REM Delete default route at remote pc
%_debug% start /min psexec.exe -d \\10.0.%net%.%%c route delete 0.0.0.0
REM Set disable status for NetMeeting Remote Desktop Sharing service at remote pc
%_debug% start /min psservice \\10.0.%net%.%%c setconfig mnmsrvc disabled
REM Stopping NetMeeting Remote Desktop Sharing service at remote pc
%_debug% start /min psservice \\10.0.%net%.%%c stop mnmsrvc
:next
REM echo next
)
:end
endlocal
Автор: Elroir
Дата сообщения: 11.02.2007 22:59
KciNKh
Я правильно понял - sed находит третий октет?
Еще вопрос - вывод команды ipconfig на русском? Если да, то напиши строчку "IP Адрес ..." - не помню, как она выглядит на русском.
Автор: KciNKh
Дата сообщения: 11.02.2007 23:04

Цитата:
Я правильно понял - sed находит третий октет?

правильно

Цитата:
Еще вопрос - вывод команды ipconfig на русском? Если да, то напиши строчку "IP Адрес ..." -

зачем? оно и так работает, там регексп "[^:]*:" пропускает как рус так и ингл вариант. Меня больше интерисует вариант без sed - так сказать для переносимости на др. компьютеры.
Автор: Elroir
Дата сообщения: 11.02.2007 23:07
KciNKh

Цитата:
зачем? оно и так работает

Ты же хочешь исключить sed.exe, а для этого мне нужно знать как выглядит эта строчка - IP-шник меня совершенно не интересует.

Добавлено:
ОК - не надо. И так получится
Автор: KciNKh
Дата сообщения: 11.02.2007 23:11

Цитата:
для этого мне нужно знать как выглядит эта строчка - IP-шник меня совершенно не интересует.

примерно так
IP-адрес . . . . . . . . . . . . : 10.0.32.90
но есть вариант и
IP-адрес . . . . . . . . . . . . : 10.0.2.100
и
IP-адрес . . . . . . . . . . . . : 10.0.228.115
так что выдирать с помощью ~n:m проблематично наверное
Автор: Elroir
Дата сообщения: 11.02.2007 23:21
KciNKh

Цитата:
так что выдирать с помощью ~n:m проблематично наверное

Мы пойдем другим путем :

Код:
for /f "usebackq tokens=5 delims=-.: " %%a in (`"ipconfig | find "IP""`) do set "net=%%a"
Автор: KciNKh
Дата сообщения: 11.02.2007 23:33
Elroir

Цитата:
for /f "usebackq tokens=5 delims=-.: " %%a in (`"ipconfig | find "IP""`) do set "net=%%a"


отлично, мне понравилось. (и чего я недогадался, ведь делал подобные реализации)

Спасибо. Сделал

а по поводу моих изврашений типа continue и break с помощью goto можно что исправить?, а то как-то неэстетично
Автор: Elroir
Дата сообщения: 11.02.2007 23:57
KciNKh

Цитата:
а по поводу моих изврашений типа continue и break с помощью goto можно что исправить?

Если честно, то я вообще не понимаю, как оно у тебя работает. Команда goto внутри цикла for, работать не должна.
А без goto, надо вложенными if-ами и использовать какую-нибудь переменную, как флаг - заходить в if или нет.
Автор: KciNKh
Дата сообщения: 12.02.2007 01:00
Elroir

Цитата:
А без goto, надо вложенными if-ами и использовать какую-нибудь переменную, как флаг - заходить в if или нет.

типа такого?

Код:
...
for /L %%c in (1,1,26) do (
set flg=1
if _%net%==_32 if %%c==13 set "flg=0"
if _%net%==_59 if %%c==13 set "flg=0"
if _%net%==_39 if %%c==25 goto end
if _%net%==_56 if %%c==26 goto end
if _%net%==_59 if %%c==26 goto end

if "!flg!"=="1" (
REM Delete default route at remote pc
%_debug% start /min psexec.exe -d \\10.0.%net%.%%c route delete 0.0.0.0
REM Set disable status for NetMeeting Remote Desktop Sharing service at remote pc
%_debug% start /min psservice \\10.0.%net%.%%c setconfig mnmsrvc disabled
REM Stopping NetMeeting Remote Desktop Sharing service at remote pc
%_debug% start /min psservice \\10.0.%net%.%%c stop mnmsrvc
)
)
Автор: Elroir
Дата сообщения: 12.02.2007 01:05
KciNKh

Цитата:
типа такого?

Именно такого
Автор: KciNKh
Дата сообщения: 12.02.2007 01:07
Elroir

Цитата:
Именно такого


Ок.
Сенкс, где-то к такому виду мне и хотелось привести эту "грозу пользователей"
Автор: Elroir
Дата сообщения: 12.02.2007 01:16
KciNKh
Извини, я стормозил - goto работатет в for-e.
Автор: KciNKh
Дата сообщения: 12.02.2007 09:22
Elroir

Цитата:
Извини, я стормозил - goto работатет в for-e.

та ничего, мне теперь, как получилось, больше нравится.
Автор: oie71
Дата сообщения: 13.02.2007 13:36
Есть такой батник:

set http_proxy=server3:3128
wget --proxy --no-cache --proxy-user=wget --proxy-password=wget http://noc.ix.net.ua/ua-list.txt --output-document=uaix.ip


Руками запускаю - работает.
Виндовым шедулером (XP SP2) - говорит "Прошлый результат 0х1" и ничего не скачивается.

Права на батник - админ домена.

Роспрямите руки
Автор: oie71
Дата сообщения: 14.02.2007 09:39
Вопрос снимается
На wget нужен был полный путь
Автор: Shaa
Дата сообщения: 14.02.2007 21:21
подскажите какая максимальная длина (в символах?) выполняемой команды в батнике?
может кто сталкивался с ограничением...
сейчас у меня скрипт генерит команду длиной около 500 символов, порядка 30 передаваемых параметров. Не понятно "скушает" она все параметры, или молча отсечет часть из них?

Ситуация следующая, есть команда апдейта ряда параметров аккаунта, типа:

update.exe -u accountid -param1 value -param2 value ... param30 value

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

update.exe -u accountid -param1 value
update.exe -u accountid -param2 value
...
update.exe -u accountid -param30 value

но это будет НАМНОГО дольше работать, и поэтому очень нежелательно
Автор: Elroir
Дата сообщения: 14.02.2007 21:30
Shaa
В WinNT и Win2000 ограничение в 2047 символов.
WinXP и выше - 8191 символов.
Автор: Shaa
Дата сообщения: 14.02.2007 21:38
Elroir
спасибо большое..
я было уже переволновался
Автор: mozers
Дата сообщения: 15.02.2007 16:09
Русская винда. (Точнее - английская ХР + MUI)
Если выполнить такой батничек
Код: COPY /?
REG /?
Автор: KapralBel
Дата сообщения: 15.02.2007 16:13
mozers
А чем именно тебе мешает кодировка 1251?
Автор: mozers
Дата сообщения: 15.02.2007 19:55
KapralBel
Я пользую SciTE. Вывод команд идет во встроенную консоль. А в той консоли либо dos866 либо win1251. Т.е. все команды выводятся нормально, а для REG и IPCONFIG приходится лезти в настройки - менять кодировку. ОЧЕНЬ неудобно.
Сейчас сляпал маленький скриптик (показывает содержимое выделенной в редакторе ветви реестра). Работает. Но показывает в крякозяблах ((
Автор: Maximus324
Дата сообщения: 15.02.2007 23:44
Помогите пожалуйста.
Мне надо сделать батник такой чтобы он в определенной папке скидывал все имена папок в текстовый файл, через запятую или просто с новой строки всеравно как.
Автор: Elroir
Дата сообщения: 16.02.2007 00:02
Maximus324

Код:
dir /b /ad "Путь к нужной папке" > dirs.txt
Автор: Maximus324
Дата сообщения: 16.02.2007 00:39
Elroir
Спасибо большое
Автор: KapralBel
Дата сообщения: 16.02.2007 10:55
mozers

Код: Chcp 1251
Dir >1
reg /?>2
Автор: mozers
Дата сообщения: 16.02.2007 16:20
KapralBel
Спасибо На 2й вопрос ответ получен.
А кто ответит на 1й ?
Цитата:
Как такое происходит ??? (Почему ВЕСЬ текст в консоли читабельный)
Автор: mozers
Дата сообщения: 18.02.2007 19:19
Так и не найдя ответ на один вопрос, решаюсь задать другой:
XCOPY /D копирует с источника на приемник только новые файлы.
Как бы потом грохнуть на приемнике все файлы(каталоги), которых нет на источнике?
Желательно бы использовать системные средства или маленькую утиль.
Предложение грохнуть все на приемнике, а уже потом начать копирование не тянет (и долго и рискованно).
Автор: howto
Дата сообщения: 18.02.2007 19:53

Цитата:
Желательно бы использовать системные средства или маленькую утиль.

mozers предлагаю вам попробовать nnBackup.
Там как раз доступна необходимая вам функция.

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879

Предыдущая тема: Problemi s zagruzkoy XP!


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