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

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



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

Код:
 
xcopy /e g:\ d:\tmp1\
 

 

Цитата:
причем хотелось бы сделать это скрыто, без видимой активности

утилиты hstart, cmdow, nircmd позволяют запускать программы без "окна"
 

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 22:06 15-05-2008
VerlyOKa

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

Цитата:
VerlyOKa  
Используй внешний цикл, который бежит по файлам. "for /f" не умеет работать с символами подстановки

 
А можно примерчик ))

Всего записей: 14 | Зарегистр. 27-09-2007 | Отправлено: 11:20 16-05-2008
Elroir



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

Цитата:
А можно примерчик


Код:
 
for %%N in (%tempdir%\*h.txt) do (
for /f "tokens=15,21,18 delims=    " %%a in (%%N) do echo %%a,%%b,%%c>>1.txt
)
 


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

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

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

Цитата:
Пользуюсь версией super Sed (sed-3.59). Ссылка  
Скачал версию 3.62 Ссылка та же картина.  
Кто-нибудь знает как заставить SED производить изменения непосредственно в файле?

3.62 кстати работает нормально, там это исправлено. Просто для windows версии необходимо еще и указывать расширение файла для бэкапа, -i.bak(--in-place=.bak). В линухах работает просто -i
http://osdir.com/ml/editors.sed.user/2006-07/msg00063.html
 
Я опцией -i не пользуюсь, и не знал про эту бодягу, юзал себе преспокойно 3.59 А версии 4.* мне активно не нравятся, не люблю консольные утилиты, за которыми надо таскать кучку длл-ок, и какая-то из 4+ версий очень вольно обходилась с концами строк в винде, меняла все crlf на lf

Всего записей: 1704 | Зарегистр. 08-12-2004 | Отправлено: 16:10 16-05-2008 | Исправлено: igor_andreev, 16:13 16-05-2008
VerlyOKa

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Elroir
Спасибо большое, еще вопросик, как можно копировать файлы с длинными именами?
Вот такой скрипт:
 
md mydir
For /R "C:/" %%a in (*.doc) do xcopy %%a \mydir
файлы с длинными именами копировать не хочет

Всего записей: 14 | Зарегистр. 27-09-2007 | Отправлено: 18:35 16-05-2008
Elroir



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

Код:
 
md mydir  
For /R "C:\" %%a in (*.doc) do xcopy "%%fa" \mydir
 



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

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 20:02 16-05-2008
Ortios



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

Цитата:
3.62 кстати работает нормально, там это исправлено. Просто для windows версии необходимо еще и указывать расширение файла для бэкапа, -i.bak(--in-place=.bak).

Ну да, подправлено, я это заметил, только куда мне девать при обработке 1000 файлов, навязанные 1000 бэк-файлов? Ведь если не указать расширение для бэкапа, то он вообще ничего не делает.
А если идет цепочка преобразования каждого файла изменяя его до неузнаваемости, этак он мне засыпет бэками весь рабочий каталог. Ну ладно убить бэки не проблема. А если этот рабочий каталог на флэшке и приходится каждый день делать эту задачу - через пару недель и флэшка прибьется
Словом нормально работающий в SED ключ -i это вещь.

Всего записей: 73 | Зарегистр. 24-12-2007 | Отправлено: 23:59 16-05-2008
igor_andreev

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

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

Да вроде не проблема, во первых можно несколько команд -e указывать одной строкой

Код:

sed -e "s/foo/bar/g" -e "s/abc/ABC/" -e "s/DFE/dfe/g" -e ...до посинения

ну и "команда 1 | команда 2 | команда 3 | ... пока не надоест" никто не отменял
Я параметром -i, как выше уже писал, вообще не пользуюсь и нормально, ничем пока рабочий каталог не засыпало .

Всего записей: 1704 | Зарегистр. 08-12-2004 | Отправлено: 14:13 17-05-2008
Ortios



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

Цитата:
"команда 1 | команда 2 | команда 3 | ... пока не надоест"

Мм..да, конвейер в применении к Sed я как-то выпустил из виду, уж очень заковыристые и длинные выражения получаются. Но попробовал, работает !

Всего записей: 73 | Зарегистр. 24-12-2007 | Отправлено: 00:00 18-05-2008
JI063uk



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите плиз где ошибка
 
@echo off
for /f "tokens=*" %%i in (1.txt) do (
shutdown  -m "\\%%i" -s -f -t 40 -c "текст"
)
 

Всего записей: 55 | Зарегистр. 24-01-2008 | Отправлено: 13:50 19-05-2008
KapralBel



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

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 15:08 19-05-2008
JI063uk



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

Цитата:
KapralBel

 
Да вобще сам понять не могу, просто строчкой в консоле вбиваю вот так shutdown  -m \\комп -s -f -t 40 -c "текст" все без проблем, а батником не хочет
 

Всего записей: 55 | Зарегистр. 24-01-2008 | Отправлено: 15:10 19-05-2008
KapralBel



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
JI063uk
Давай содержимое файла 1.txt

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 15:33 19-05-2008
JI063uk



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

Цитата:
KapralBel

 
Там просто имена компов
 
comp1
comp2
comp3

Всего записей: 55 | Зарегистр. 24-01-2008 | Отправлено: 15:41 19-05-2008
KapralBel



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
JI063uk
1. Часом имена компов не по русски?
2. Измени батничек на

Код:
 @echo off
for /f "tokens=*" %%i in (1.txt) do (
echo shutdown  -m "\\%%i" -s -f -t 40 -c "текст" >>2.txt
)  

и дай на просмотр файл 2.txt

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 16:02 19-05-2008
JI063uk



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

 

Цитата:
KapralBel

батник был назвон Shutdown.bat переименовал его и все работает, а теперь обьясните чё за ....

Всего записей: 55 | Зарегистр. 24-01-2008 | Отправлено: 16:46 19-05-2008
Tipulatoid



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
JI063uk
Дело в том shutdown.exe - внешняя прога. Получив команду на вызов внешней проги, батник ищет ее сначала в текущей папке, затем в папках, обозначенных в переменной %path% В твоем случае батник в текущей папке находил сам себя и сам себя пытался запустить с обозначенными параметрами.

Всего записей: 349 | Зарегистр. 22-12-2006 | Отправлено: 17:25 19-05-2008
AlexPetrovich

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
При запуске программы без разширения - сначала ишется .bat (.cmd), потом .com, потом .exe
 
echo shutdown  - вызывал shutdown.bat
 
Указывай расширения файлов и не будет таких траблов..

Всего записей: 87 | Зарегистр. 08-05-2003 | Отправлено: 17:27 19-05-2008
Elroir



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

Цитата:
При запуске программы без разширения - сначала ишется .bat (.cmd), потом .com, потом .exe

Вообще-то не так. Сначала ищется com, потом exe, потом bat, cmd, vbs и так далее. Просто сначала ищется в текущей директории, а потом по директориям в переменной path.

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

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 18:35 19-05-2008 | Исправлено: Elroir, 18:36 19-05-2008
KapralBel



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

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 23:00 19-05-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.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru