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

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

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

Widok (10-03-2009 12:39): Лимит страниц. Продолжаем здесь.  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 102 103 104 105 106 107 108

   

Widok



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

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

Всего записей: 24190 | Зарегистр. 07-04-2002 | Отправлено: 12:08 19-11-2007 | Исправлено: Dmitriy05, 22:49 13-04-2008
igor_andreev

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
XXXXL
sed.exe можно заюзать, или vbscript. Чистый батник не всегда адекватно будет реагировать на спецсимволы

Код:

sed -e "s/[^a-z0-9.]//g" old.txt>new.txt

Всего записей: 1667 | Зарегистр. 08-12-2004 | Отправлено: 19:30 29-03-2008
Elroir



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
XXXXL
Предположим, что строчка находится в файле test.txt, тогда:

Код:
 
@echo off
setlocal
for /f "tokens=*" %%a in (test.txt) do (set "line=%%a")
call :alfanum
:: В переменной %newline% сейчас находится строка с оставшимися символами
echo %newline%
goto :EOF
:alfanum
set "include="
set "letter=%line:~0,1%"
for %%a in (a b c d e f g h i j k l m n o p q r s t u v w x y z 1 2 3 4 5 6 7 8 9 0) do (  
if /i "%letter%"=="%%a" (set "include=yes")
)
if defined include set "newline=%newline%%letter%"
set "line=%line:~1%"
if not "%line%"=="" goto alfanum
 

 
Добавлено:
igor_andreev
Ну не доходят у меня руки до sed-a :-)

----------
"В интернете есть все, но не всегда"

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 19:34 29-03-2008 | Исправлено: Elroir, 21:10 29-03-2008
igor_andreev

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
XXXXL
Предыдущая строчка с sed была именно для твоего примера - "rt54%67/%$90)(%&ghjkdhg" Если есть и прописные и строчные буквы, то нужно [^A-Za-z0-9.]
 
 
Добавлено:
Elroir
Да я и сам в регулярных выражениях не силен, более-менее простые вещи еще могу, со сложными начинаю спотыкаться.

Всего записей: 1667 | Зарегистр. 08-12-2004 | Отправлено: 19:46 29-03-2008
XXXXL



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
igor_andreev,Elroir, спасибо вам ребята за отзывчивость!
 

Всего записей: 286 | Зарегистр. 16-05-2007 | Отправлено: 20:19 29-03-2008
gryu



дикий гусь
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Elroir, 01MDM спасибо. Только сегодня смог взятся за скрипт.
Спасибо ещё раз. Воспользовался  предложенным Elroirом.
 
 

Всего записей: 12952 | Зарегистр. 15-03-2006 | Отправлено: 19:18 30-03-2008
igor_andreev

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

Цитата:
Вот еще один вариант, ограничение - максимальная длина строки в CMD.

Кстати с sed в этом плане попроще, у нее ограничения наверное есть, но где то за пределами разумного. Создал сейчас файл test.txt - чуть больше миллиона знаков в одну строчку. За полсекунды разделила каждые восемь знаков запятой

Код:

sed -e "s/\(.\{8\}\)/\1\,/g" test.txt >new.txt

sed у меня сейчас эта http://sed.sourceforge.net/grabbag/ssed/sed-3.59.zip (super-sed)
 
 

Всего записей: 1667 | Зарегистр. 08-12-2004 | Отправлено: 20:48 30-03-2008 | Исправлено: igor_andreev, 20:50 30-03-2008
gryu



дикий гусь
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
igor_andreev

Цитата:
sed у меня сейчас эта http://sed.sourceforge.net/grabbag/ssed/sed-3.59.zip (super-sed)  

т.е. идея в том, что на машине существуют сторонние программы пр помощи которых и производятся операции?
Тогда это однозначно не пойдёт.  
Идея в том, что бы делать всё чисто штатными средствами.  
Отослал батник - получил результат.  
 
Добавлено:
Кстати, если я не ошибаюсь, то в бат-файле нет возможности создать меню с выбором исполняемого блока. Или всё же есть?
Интересует результат типа  
1. Бэкап
2. Ресторе
3. Выход
С выбором.  
(организация требуемого сторонней программой возможна. А вот может прямо так можно??? )

Всего записей: 12952 | Зарегистр. 15-03-2006 | Отправлено: 22:09 30-03-2008 | Исправлено: gryu, 22:16 30-03-2008
01MDM



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

Цитата:
Кстати, если я не ошибаюсь, то в бат-файле нет возможности создать меню с выбором исполняемого блока. Или всё же есть?
Интересует результат типа  
1. Бэкап
2. Ресторе
3. Выход
С выбором.  
(организация требуемого сторонней программой возможна. А вот может прямо так можно??? )

 
В смысле выбор задачи для выполнения интерактивно? Можно.
 

Код:
 
@echo off
echo [1] Task1
echo [2] Task2
echo [3] Task3
 
set /p tsk="Choose a task by number: "
 
if not defined tsk goto:eof
if %tsk%==1 goto:1
if %tsk%==2 goto:2
if %tsk%==3 goto:3
goto:eof
 
:1
echo 1
goto:eof
:2
echo 2
goto:eof
:3
echo 3
goto:eof
 
 


Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 22:38 30-03-2008 | Исправлено: 01MDM, 22:42 30-03-2008
gryu



дикий гусь
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
01MDM
Опа.
А я перечитал кучу инфы, и нигде не указано.  
пробовал как в конфиге через [MENU], но не работает.  

Всего записей: 12952 | Зарегистр. 15-03-2006 | Отправлено: 22:48 30-03-2008
drondo



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Имется ноут, который ношу на работу. есть две локалки, на работе и дома соответственно. настройки сетевого соединения отличаются лишь IP адресом, DNS и шлюзом. скажите можно ли сделать чтото типа скрипта или батника для автоматизации изменения сетевых параметров? Ручками надоело каждый день. Программы типа NETswitcher не предлагать, нужен именно скрипт, батник или подобное.

Всего записей: 461 | Зарегистр. 28-10-2005 | Отправлено: 18:07 02-04-2008
igor_andreev

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
drondo
Бета-тестером будешь У меня есть где-то такой батник, написал в ситуации, схожей с твоей. Я им сам так толком и не попользовался, роутер другой купил, везде IP и DNS стал одинаковый, и дома и на работе. До дома доберусь - выложу.
 
Добавлено:
там кстати несложно, можешь и сам батник написать, сохранить настройки:
netsh interface dump > data.txt  
восстановить:  
netsh -f data.txt

Всего записей: 1667 | Зарегистр. 08-12-2004 | Отправлено: 19:02 02-04-2008
01MDM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
drondo
igor_andreev
 
Можно слегка "облагородить"

Код:
 
@echo off
setlocal
echo [1] Work
echo [2] Home
set /p location="Choose location by number: "
if not defined location goto:eof
if %location%==1 netsh exec Work.cfg
if %location%==2 netsh exec Home.cfg
 

 
Где Work.cfg и Home.cfg результаты:  

Код:
 
netsh interface ip dump >Work.cfg или Home.cfg
 

 
Эти файлы должны быть рядом с батником
 
ЗЫ. Не проверял.

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 19:57 02-04-2008
igor_andreev

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
drondo
Посмотрел сейчас аж три варианта этого батника в разных ипостасях, какой из них стопудово рабочий - не помню. Кажется этот  setwf.zip (~2 Kb). Лучше использовать вместе с choice.zip (~20 Kb), но эт не обязательно. Еще мне почему-то казалось, что я выбор принтера делал, но сейчас такого батника чего-то не вижу.
 
01MDM

Цитата:
Можно слегка "облагородить"

У мну этот setwf (set wi-fi) - оо-о-очень облагорожен Меню может работать с choice.exe из Win 2000 ResKit и из XP Support Tools и из Win2003 и просто с set /p. Я даже не помню, зачем так делал, тренировался наверно. В любом случае, батник можно рассматривать начинающим, как пособие по созданию динамического меню в cmd.

Цитата:
ЗЫ. Не проверял.

Я тоже
 
 

Всего записей: 1667 | Зарегистр. 08-12-2004 | Отправлено: 21:52 02-04-2008 | Исправлено: igor_andreev, 21:58 02-04-2008
XXXXL



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
igor_andreev,помог с батником для выреза символов с строки
 

Код:
sed-3.59.exe -e "s/[^A-Za-z0-9.]//g" test.txt >new.txt  

 
Возникла необходимость выреза всех пустых строк с test.txt
 
Кто знает как сделать, помогите пожалуйста.
 

Всего записей: 286 | Зарегистр. 16-05-2007 | Отправлено: 23:46 02-04-2008 | Исправлено: XXXXL, 23:50 02-04-2008
gryu



дикий гусь
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
drondo
igor_andreev
01MDM
Народ, а разве "Альтернативная конфигурация" в данном случае не работает?
В ХР это ж предусмотрено.  

Всего записей: 12952 | Зарегистр. 15-03-2006 | Отправлено: 23:47 02-04-2008
igor_andreev

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

Цитата:
В ХР это ж предусмотрено.

Не пользуюсь, она там без самостоятельного интеллекта, конфигурация эта  
XXXXL

Цитата:
Возникла необходимость выреза всех пустых строк с test.txt

Наверно так как-то

Код:

sed -e "s/[^A-Za-z0-9]//g" -e "/^[ \t]*$/d" test.txt >new.txt  

После 0-9 точка не нужна кстати, я по запарке написал. Если что-то не пойдет, попробуй вместо  "/^[ \t]*$/d" написать "/^[\s]*$/d"
 
И еще - команда FOR не учитывает пустые строки при чтении файла, поэтому можно без всякого sed:

Код:

for /f "tokens=*" %%a in ('type test.txt') do echo %%a>>new.txt

 

Всего записей: 1667 | Зарегистр. 08-12-2004 | Отправлено: 01:06 03-04-2008 | Исправлено: igor_andreev, 01:31 03-04-2008
01MDM



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

Цитата:
Возникла необходимость выреза всех пустых строк с test.txt

 
Еще так

Код:
 
sed -n "s/[^\^\$]/&/g w new.txt" test.txt
 

 
 

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 08:53 03-04-2008 | Исправлено: 01MDM, 09:55 03-04-2008
magazinus



Tracker Mod
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Знатоки, помогите, такая задачка: есть постоянно пополняемая папка с кучей .dwg (например) файлов, нужно получить из них самый свежий по дате (тот, что пришел туда последним) и подставить его имя в параметр командной строки program.exe.

Всего записей: 1364 | Зарегистр. 14-01-2007 | Отправлено: 14:54 03-04-2008
01MDM



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

Код:
 
@echo off
for /f "tokens=*" %%i in ('dir /b /od *.dwg') do set "file=%%i"
start "" "program.exe" "%file%"
 


Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 15:20 03-04-2008 | Исправлено: 01MDM, 15:24 03-04-2008
magazinus



Tracker Mod
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
01MDM
Большое спасибо, работает.

Всего записей: 1364 | Зарегистр. 14-01-2007 | Отправлено: 15:49 03-04-2008
   

Страницы: 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 102 103 104 105 106 107 108

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


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

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.Board
© Ru.Board 2000-2020

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru