Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » Командная строка, батники, сценарии (bat, cmd)

Модерирует : gyra, Maz

Widok (03-03-2010 16:29): Лимит страниц. Продолжаем здесь.  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101

   

Widok



Moderator-Следопыт
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Командная строка, батники\сценарии (bat, cmd)
(часть 1) (часть 2)
Вопросы, задачи и их решения по работе с командной строкой, файлами, а также сопутствующие ссылки.

 
Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!!
 
Примечание: Большие куски кода заключайте в тэг [more]  
 
Смежные темы:
В помощь системному администратору » Автоматизация администрирования
Microsoft Windows » Задачи на bat-файлах 5
 
Полезные ссылки:
· Cmd. Описание от разработчиков
· Урок bat-аники (для начинающих)
· Курс лекций для начинающих. Полезно и просто описано
· Набор GNU утилит для win32
· Пакет утилит для организации интерфейса в bat-файлах
· Использование ansi.sys
· cmdow — изменение параметров и видимости дос-окна
· blat — отправка почты из консоли
· Справка по командам в виде Html
· Команды RunDll32
· Quick Batch File Compiler - Позволяет превратить ваш батник в независимое приложение
· Пример - получение и обработка списка пользователей
· Уильям Станек - Командная строка Microsoft Windows (вплоть до w2k3)
· Простой способ получать текущую дату всегда в одном формате (не зависит от языков и настроек)
· Переход из 32-битной версии cmd.exe в 64-битную

Всего записей: 24190 | Зарегистр. 07-04-2002 | Отправлено: 12:38 10-03-2009 | Исправлено: TechnicsKuzya, 13:54 27-12-2009
01MDM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
VV2006
start /?

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 21:37 08-10-2009
VV2006

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
01MDM
Спасибо! Действительно, кто бы мог догадаться, что запуск в отдельном окне и есть одновременно-параллельно! Теперь всё замечательно - один cmd-файл!

Всего записей: 2123 | Зарегистр. 10-02-2006 | Отправлено: 11:25 09-10-2009
TruLander100

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ЫЫы! народ как вставить в определенную строку файла слово?

Всего записей: 24 | Зарегистр. 22-03-2009 | Отправлено: 18:13 10-10-2009
01MDM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
TruLander100

Цитата:
как вставить в определенную строку файла слово?

С помощью sed (вставит "слово" в начало 10 строки в 1.txt):

Код:
 
sed "10 s/.*/слово&/" 1.txt 1>~1.txt
move /y ~1.txt 1.txt
 

Или так, но бывают различия в версиях (одно чинят, другое ломают):

Код:
 
sed -i "10 s/.*/слово&/" 1.txt
 


Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 20:19 10-10-2009
TruLander100

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sed - этого в cmd нет вроде? не работает на bat пример. где взять этот sed чет я не пойму, погуглил немного ниче не понел(( это в unix'ах используется? как его на windows использовать?

Всего записей: 24 | Зарегистр. 22-03-2009 | Отправлено: 14:04 11-10-2009
01MDM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
TruLander100
Гуглить надо gnuwin32, http://gnuwin32.sourceforge.net/packages/sed.htm

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 16:10 11-10-2009
Mosl

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте.  
Я уже обращался за помощью:

Цитата:
Помогите в написании сценария. Надо написать сценарий при выполнении, которого будет выполняться ping сетевого ресурса, если ресурс не отвечает, будет выполняться действие по переподключению VPN соединения (разрыв и соединение).

 
Тогда мне написали  

Код:
@echo off  
1>nul ping -n 1 ya.ru && goto:eof  
 
rasdial "vpn_name" /disconnect  
rasdial "vpn_name" vpn_login vpn_password  

 
Можно его подправить так что бы доступность ресурса проверялась не пингом а именно доступность index.html?

Всего записей: 620 | Зарегистр. 09-05-2006 | Отправлено: 23:52 11-10-2009 | Исправлено: Mosl, 23:56 11-10-2009
01MDM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mosl

Цитата:
Можно его подправить так что бы доступность ресурса проверялась не пингом а именно доступность index.html?

Наверное если только его выкачать. С помощью wget:

Код:
 
@echo off  
cmd /c wget ya.ru
 
if not exist index.html (
    rasdial "vpn_name" /disconnect  
    rasdial "vpn_name" vpn_login vpn_password
)
2>nul del index.html  
 


Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 00:11 12-10-2009
Mosl

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
01MDM
Все спасибо разобрался!

Всего записей: 620 | Зарегистр. 09-05-2006 | Отправлено: 00:21 12-10-2009 | Исправлено: Mosl, 00:27 12-10-2009
01MDM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mosl
Конечно, это third-party утилита. Надо найти и скачать. Например с http://gnuwin32.sourceforge.net/packages/wget.htm
 
Штатными средствами это наверное возможно сделать в висте-семерке с помощью bitsadmin.exe (в 7 (ultimate и enterpise) точно есть), но не уверен и проверить сейчас не могу. В XP нельзя.
 
А чем не устраивает ping?

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 00:31 12-10-2009
Mosl

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
01MDM
да я уже нашел и скачал wgetwin-1.5.3.1. Скинул в sistem32. все заработало. У меня win7 ultimate - проверил bitsadmin.exe - есть такая команда, но там к ней столько ключей!!! Без бутылки не разберешься )))) (разве что вы подскажите) А с  wget все понятно, вроде работает, но надо испытать в палевых условиях.
А ping не устроил тем что у моего провайдера (beeline UA) опять глюки - vpn не рвется, сайты все пингуются, внутрение ресурсы работают, НО не один внешний сайт или закачка не работает.

Всего записей: 620 | Зарегистр. 09-05-2006 | Отправлено: 01:15 12-10-2009 | Исправлено: Mosl, 01:18 12-10-2009
01MDM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mosl
Пример:

Код:
 
bitsadmin /transfer "test" /download /priority normal http://ya.ru "%cd%\index.html"
 


Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 08:33 12-10-2009
Dr29BArt



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите как удалить несуществующие пути из переменной path.

Всего записей: 7 | Зарегистр. 20-09-2009 | Отправлено: 10:34 12-10-2009
hiqmax



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Dr29BArt
Если ХР, то на панели управления Система -> Дополнительно -> Переменные среды

Всего записей: 362 | Зарегистр. 01-03-2009 | Отправлено: 11:05 12-10-2009
Mosl

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
01MDM
спасибо. А как это в скрипте? Так?
@echo off    
bitsadmin /transfer "test" /download /priority normal http://ya.ru "%cd%\index.html"  
   
if not exist index.html (  
    rasdial "vpn_name" /disconnect    
    rasdial "vpn_name" vpn_login vpn_password  
)  
2>nul del index.html  

Всего записей: 620 | Зарегистр. 09-05-2006 | Отправлено: 12:04 12-10-2009
01MDM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mosl
Да, так. Но все таки wget побыстрей работает, а bitsadmin у меня пару раз вылетал на ровном месте с ошибкой.
Только слегка измени строчку:

Код:
 
bitsadmin /transfer "test" /download /priority normal http://ya.ru "%~dp0index.html"  
 


Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 13:22 12-10-2009
Dr29BArt



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
hiqmax, ёлки-палки спасибо конечно, но я подразумевал ответ в виде кода исполняемого файла *.bat, в данной теме. Может всё таки есть идеи?

Всего записей: 7 | Зарегистр. 20-09-2009 | Отправлено: 16:19 12-10-2009
Mosl

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
01MDM
не сработал скрипт:
Код:
@echo off    
cmd /c wget ya.ru  
   
if not exist index.html (  
    rasphone.exe -h "Beeline"
    rasphone.exe -d "Beeline"
)  
2>nul del index.html  

 
Уходит в цикл, пишет -  
 
--17:26:24--  http://ya.ru:80/
           => `index.html'
Connecting to ya.ru:80...
connect: No such file or directory
Retrying.
 
--17:26:45--  http://ya.ru:80/
  (try: 2) => `index.html'
Connecting to ya.ru:80...
connect: No such file or directory
Retrying.
 
--17:27:06--  http://ya.ru:80/
  (try: 3) => `index.html'
Connecting to ya.ru:80...
connect: No such file or directory
Retrying.
 
--17:27:27--  http://ya.ru:80/
  (try: 4) => `index.html'
Connecting to ya.ru:80...
connect: No such file or directory
Retrying.
 
--17:27:48--  http://ya.ru:80/
  (try: 5) => `index.html'
Connecting to ya.ru:80...
connect: No such file or directory
Retrying.
 
--17:28:09--  http://ya.ru:80/
  (try: 6) => `index.html'
Connecting to ya.ru:80...
connect: No such file or directory
Retrying.
 
--17:28:31--  http://ya.ru:80/
  (try: 7) => `index.html'
Connecting to ya.ru:80...
 
второй скрипт:

Код:
@echo off    
bitsadmin /transfer "test" /download /priority normal http://ya.ru "%~dp0index.html"    
   
if not exist index.html (  
    rasphone.exe -h "Beeline"
    rasphone.exe -d "Beeline"  
)  
2>nul del index.html  

 
Тоже самое.  
Исправил так, но не знаю на сколько это коректно?

Код:
@echo off    
wget -t 1 ya.ru  
   
if not exist index.html (  
    rasphone.exe -h "Beeline"
    rasphone.exe -d "Beeline"
)  
2>nul del index.html

Всего записей: 620 | Зарегистр. 09-05-2006 | Отправлено: 18:30 12-10-2009 | Исправлено: Mosl, 19:28 12-10-2009
01MDM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mosl
Не знаю. У меня оба варианта работают. Может яндекс забанили в украине? Попробуй google.com или еще какую-нибудь "легкую" страницу.
Вот вывод wget:

Код:
 
 > wget ya.ru
SYSTEM_WGETRC = c:/progra~1/wget/etc/wgetrc
syswgetrc = C:\Users\mdm\BIN\Gnu/etc/wgetrc
--2009-10-12 20:20:35--  http://ya.ru/
Распознаётся ya.ru... 93.158.134.8, 213.180.204.8, 77.88.21.8
Устанавливается соединение с ya.ru|93.158.134.8|:80... соединение установлено.
Запрос HTTP послан, ожидается ответ... 200 OK
Длина: 4891 (4,8K) [text/html]
Сохраняется в каталог: `index.html'.
 
100%[================================================>] 4 891       --.-K/s   в 0s
 
2009-10-12 20:20:35 (105 MB/s) - `index.html' сохранён [4891/4891]
 

А это неудача:

Код:
 
 > wget y.ru
SYSTEM_WGETRC = c:/progra~1/wget/etc/wgetrc
syswgetrc = C:\Users\mdm\BIN\Gnu/etc/wgetrc
--2009-10-12 20:35:27--  http://y.ru/
Распознаётся y.ru... сбой: No data record of requested type.
wget: невозможно распознать адрес `y.ru'
 

 
Dr29BArt
Два варианта. Первый, если заранее точно известно, что пользовательская переменная %PATH% не определена. Второй, если этого не известно.
 
1 вариант:

Код:
 
@echo off
setlocal
 
for %%i in ("%path:;=","%") do call:check %%i
echo reg add "hklm\system\currentcontrolset\control\session manager\environment" /v PATH /t reg_expand_sz /d "%newpath:~0,-1%" /f
goto:eof
 
:check
if exist %1 set "newpath=%newpath%%~1;"
 

 
2 вариант:

Код:
 
@echo off
setlocal
 
set "regpath_1=hklm\system\currentcontrolset\control\session manager\environment"
set "regpath_2=hkcu\environment"
 
for /f "tokens=2,3 delims=_=" %%i in ('set regpath_') do (
    1>nul 2>&1 reg query "%%j" /v path && call:check %%i "%%j" || set "regpath_%%i="
)
goto:eof
 
:check
for /f "tokens=3*" %%i in  ('reg query %2 /v path') do (
    if not "%%j"=="" (set "tmppath=%%i %%j") else (set "tmppath=%%i")
)
 
for %%i in ("%tmppath:;=","%") do call:set %%i
for /f "tokens=2 delims==" %%i in ('set regpath_%1') do (
    echo reg add "%%i" /v PATH /t reg_expand_sz /d "%newpath:~0,-1%" /f
)
set "newpath="
goto:eof
 
:set
if exist %1 set "newpath=%newpath%%~1;"
 
 
 
Чтоб привести в рабочее состояние надо убрать echo. Но сначала лучше проверить. Изменения вступают в силу после перезагрузки/перелогина/и т.д

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 20:12 12-10-2009 | Исправлено: 01MDM, 20:36 12-10-2009
Mosl

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
01MDM
ты не понял. Никто нечего не забанил. Я имел виду что в цикл уходит когда нет соединения (связи с ресурсом)! Скрипт продолжает опрашивать его  раз за разом и не переходит к выполнению задачи соединения. Я решил добавив параметр -t 1 ("wget -t 1" - он задает количество попыток). И убрал cmd /c так как с ним после выполнения wget -t 1 ya.ru (в случае не доступности)  дальше скрипт не выполнялся.
Скрипт в таком виде отробатывает коректно:

Код:
@echo off    
wget -t 1 ya.ru  
   
if not exist index.html (  
    rasphone.exe -h "Beeline"  
    rasphone.exe -d "Beeline"  
)  
2>nul del index.html  

Всего записей: 620 | Зарегистр. 09-05-2006 | Отправлено: 21:09 12-10-2009 | Исправлено: Mosl, 21:10 12-10-2009
   

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101

Компьютерный форум Ru.Board » Компьютеры » Программы » Командная строка, батники, сценарии (bat, cmd)
Widok (03-03-2010 16:29): Лимит страниц. Продолжаем здесь.


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru