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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
hanssliver

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

Цитата:
Если запустить код из ком. строки, что происходит?

тоже самое и просто при запуске..
раньше был ярлык в автозагрузке, с ним работает нормально

Всего записей: 50 | Зарегистр. 04-05-2008 | Отправлено: 10:20 06-02-2009
anatoly2002

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Полезная утилита - hs_message.exe из пакета утилит для организации интерфейса в bat-файлах. Знает ли кто-нибудь нечто подобное, допускающее изменение надписей на кнопках?

Всего записей: 226 | Зарегистр. 04-06-2002 | Отправлено: 10:37 06-02-2009
Maza_Faka



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

Цитата:
тоже самое и просто при запуске

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

Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 11:58 06-02-2009
An0xiety

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Maza_Faka
 
Спасибо, дружище, за то, что подсказал SED.EXE, это просто отличная утилита.  
Тут неплохой мануал к ней на английском
 
С помощью SED.EXE решил комментирование/раскомментирование строк начинающихся на LogFile таким образом:

Код:
sed -n "/LogFile/p" <input.txt | Findstr /i "^Logfile" >Nul 2>&1 && sed s/^LogFile/#LogFile/g <input.txt >output.txt || sed s/^#LogFile/LogFile/g <input.txt >output.txt  

Теперь батник определяете раскоменнтирован ли LogFile, если да, то комментирует его  (меняя LogFile на #LogFile), если LogFile закомментирован - то на оборот, удалит # перед LogFile.
 
А с виндовыми средствами так и не сложилось, после комментирования, файл на выходе был без пустых строк, что сильно усложняло чтение лога. И еще , если в логе были команды CMD, то во время разбора по строкам они выполнялись !!
 
кстати, с помощью SED.EXE можно делать grep :

Код:
sed -n "/LogFile/p"

равно

Код:
grep LogFile

 
Есть 2 вопроса:
 
1) не подскажите, как игнорировать регистр в SED.EXE ? В Findstr это ключ /i, например.  Я в мануале так и не нашел
2) можно ли читать из файла input.txt и после выполнения операций в этот же файл input.txt  и записать?  
например

Код:
 sed -n "/LogFile/p" <input.txt >input.txt  

у меня просто стирает содержимое файла input.txt

Всего записей: 25 | Зарегистр. 16-02-2008 | Отправлено: 20:12 07-02-2009 | Исправлено: An0xiety, 20:22 07-02-2009
Smitis



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

Цитата:
1) не подскажите, как игнорировать регистр в SED.EXE ? В Findstr это ключ /i, например.  Я в мануале так и не нашел  
2) можно ли читать из файла input.txt и после выполнения операций в этот же файл input.txt  и записать?  


Цитата:
Тут неплохой мануал к ней на английском  

Хреновый какой-то мануал
 
1)

Цитата:
/regexp/I  
\%regexp%I  
The I modifier to regular-expression matching is a GNU extension which causes the regexp to be matched in a case-insensitive manner.

2) В ком строке -i

Цитата:
-i[SUFFIX]  
--in-place[=SUFFIX]  
This option specifies that files are to be edited in-place. GNU sed does this by creating a temporary file and sending output to this file rather than to the standard output.(1).

т.е

Код:
sed -n "/LogFile/p" -i input.txt



----------
Разум когда-нибудь победит

Всего записей: 2469 | Зарегистр. 09-02-2003 | Отправлено: 00:15 08-02-2009 | Исправлено: Smitis, 00:17 08-02-2009
An0xiety

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Smitis
 
1) большая просьба, можете привести пример, как под вин. нужно указать параметр игнора регистра?
 
2)
Не работает ни  

Код:
sed s/123/456/g -i New_file.txt

ни

Код:
sed -i s/123/456/g New_file.txt

постоянно пишет ошибку:
sed.exe: invalid option -- i

Всего записей: 25 | Зарегистр. 16-02-2008 | Отправлено: 23:45 08-02-2009
Kilyan



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

Цитата:
Elroir  
Хорошо.теперь подробнее:  
укажем кол-во допустимых инкрементов=2  
Указываем файл=файл1, проверяем его на галичие если находим переименовываем (с файл1 в файл1_1), при следующем запуске опять проверка, но если находим файл1 и файл1_1 то файл один1_1 должен стать файл1_2, файл1 должен стать файл1_1 ну а файл файлом1.  
Тким образом - переименование файлов будет идти до указанной точки и старые файлы могут затираться новыми.  
И всегда файлов будет в этом случае 3 (текущий фай1,файл1_1, файл1_2)  
в этом же  примере идет просто инкрементное добавление следующего значения.  
ну гдето так!

В программе nnBackup - резервное копирование - есть ключ -n(x) - кол-во ротаций.
Вот мне и нужно применить такую ротацию в переименовании файла до указанной.
Кто нибудь сможет помочь с решением?  

Всего записей: 884 | Зарегистр. 04-09-2008 | Отправлено: 11:37 09-02-2009 | Исправлено: Kilyan, 11:43 09-02-2009
svradmin



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Поможите с батником нужно из файла прочитать строки и присвоить переменную внутри строки определённым символам ну например есть файл 1.txt с содержанием примерно:  
bin(u7avi1425rj.bin)grp(avi:1425)len(6499380)tm(0901300846)pri(2)
bin(u7avi1425u1323rk.bin)grp(avi:1425)len(451923)dep(avi:1323)tm(0901300846)pri(2)
bin(u7avi1425u1409rk.bin)grp(avi:1425)len(82422)dep(avi:1409)tm(0901300846)pri(2)
bin(u7iavi19290.bin)grp(iavi:1929)len(32879742)tm(0902011910)pri(2)
bin(x8xplsb2_45uc.bin)grp(xplsb2:45)len(2047)tm(0901271742)pri(2)
bin(x8xplsb_41cf.bin)grp(xplsb:41)len(482066)tm(0901241412)pri(2)
bin(x8xplsb_41d37cf.bin)grp(xplsb:41)len(50657)dif(xplsb:37)tm(0901241412)pri(2)
bin(x8xplsb_41d38cf.bin)grp(xplsb:41)len(30447)dif(xplsb:38)tm(0901241412)pri(2)
 
 
переменную присваивать нужно u7avi1425rj.bin и тд *.bin чтоб потом её использовать дальше в коде батника

Всего записей: 20 | Зарегистр. 10-03-2007 | Отправлено: 11:47 09-02-2009 | Исправлено: svradmin, 12:42 09-02-2009
Elroir



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

Код:
 
for /f "tokens=2 delims=()" %%a in (1.txt) do call :process "%%a"
goto :eof
:process
echo Argument = %1
set "var=%~1"
echo "var" = %var%
 

 
Kilyan
Все никак времени нет тебе код написать :-(

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

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 16:57 09-02-2009
Kilyan



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Elroir
Может быть все же найдется? ато логи хочется в 2-3 файлах иметь, и по одинаково структуре со смещением.
Вот этот код Подробнее... не совсем подходит - удаляется старее по дате создания по указанному кол-ву возможных SKIP=2.

Всего записей: 884 | Зарегистр. 04-09-2008 | Отправлено: 17:19 09-02-2009
svradmin



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Большое человеческое спасибо, работает

Всего записей: 20 | Зарегистр. 10-03-2007 | Отправлено: 05:13 10-02-2009
Elroir



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

Код:
 
@echo off
setlocal
set "maxFiles=5"
set "file=backup.txt"
for %%a in (%file%) do set "name=%%~na" && set "ext=%%~xa"
if exist "%name%_%maxFiles%%ext%" del /q "%name%_%maxFiles%%ext%"
for /l %%i in (%maxFiles%,-1,1) do call :checkAndRename %%i
if exist "%file%" ren "%file%" "%name%_1%ext%"
:: Здесь твой код создания бекапа
:: . . .  
 
 
goto :EOF
:checkAndRename
set /a "next=%1+1"
if exist "%name%_%1%ext%" ren "%name%_%1%ext%" "%name%_%next%%ext%"
 


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

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 16:14 10-02-2009
Kilyan



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Elroir
Это просто суппер! Биииг Сенкс.... Как я не изворачивался с полуготовыми примерами - ну не получалось у меня... Огромное спасибо!
Если есть возможность - закинь в Задачи на bat-файлах 5. Наверняка пригодится еще кому!..

Всего записей: 884 | Зарегистр. 04-09-2008 | Отправлено: 16:24 10-02-2009
Rush

Уже за тридцать...
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Столкнулся с такой проблемой - не хочет у меня findstr понимать кириллицу.
Наверное, просто тямы у меня не хватает...
Команда такая:

Код:
cmd /c findstr /i "текст" 1.txt > 2.txt

С английским все нормально...  
Подскажите, пожалуйста.

Всего записей: 3551 | Зарегистр. 20-11-2003 | Отправлено: 12:01 11-02-2009
KapralBel



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Rush
А если его выполнить из cmd.exe
 
Ктстати -
Цитата:
cmd /c findstr /i "текст" 1.txt > 2.txt
 

Это фрагмент батника или то что вводится через пуск\выполнить

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 12:22 11-02-2009
Rush

Уже за тридцать...
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KapralBel
из командной строки
 
Добавлено:
cmd.exe тоже пробовал

Всего записей: 3551 | Зарегистр. 20-11-2003 | Отправлено: 12:42 11-02-2009
KapralBel



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
И?
что дает?
 
если не трудно мне на МойНик@GMail.Com - и файл и что ищется

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 12:49 11-02-2009
Rush

Уже за тридцать...
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KapralBel
Ничего.
 
Файл любой. Я пробовал различные. Со смешанным текстом при строке поиска латиницу находит, а кириллицу нет.
Например, в файле с таким содержимым:

Код:
 
b
п
d
ц
z
д
 


Всего записей: 3551 | Зарегистр. 20-11-2003 | Отправлено: 13:25 11-02-2009
KapralBel



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Rush
А в какой кодировке текст?
Ищет национальные буквы - когда они в OEM кодировке

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 13:48 11-02-2009
U235

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Rush
Файл в котором ищется, должен быть в кодировке 866, а не 1251.
Или батник должен быть написан в 1251 кодировке.

Всего записей: 744 | Зарегистр. 14-12-2005 | Отправлено: 13:56 11-02-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 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