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

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

Модерирует : KLASS, IFkO

vu1tur (14-11-2006 16:59): http://forum.ru-board.com/topic.cgi?forum=62&topic=9040  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

hacsoft

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Задачи на bat-файлах
Вопросы, задачи и их решения по работе с командными файлами, а также сопутствующие ссылки.
 
Смежные темы:
В помощь системному администратору » Автоматизация администрирования
Программы » Командная строка, батники\сценарии
 
Полезные ссылки:
· Cmd. Описание от разработчиков
· Набор GNU утилит для win32
· Встроенный справочник по командам: hh ntcmds.chm
· Пакет утилит для организации интерфейса в bat-файлах
· Использование ansi.sys
· cmdow — изменение параметров и видимости дос-окна
· blat — отправка почты из консоли
 
Готовые решения и частые вопросы:
· Создание листинга директорий на примере создания плейлиста
· Разименовывание переменных
· Переименовывание файлов по дате создания
· Запуск сетевого подключения
· Запуск bat файлов как сервис
· Пример выполнения команд по результату команды ping
· Использование даты на день раньше чем сегодня
 
Невозможности — что нельзя сделать с помощью командных файлов:
· изменть конфигурацию IP на удаленной машине (без помощи rcmd.exe) [добавил ALEF]
 
 
Дополняем шапку: добавляем готовые решения, полезные ссылки.
 
Примечание: Большие куски кода заключайте в тэг [more]  
 
Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!!
 
Старая версия первого сообщения

Всего записей: 116 | Зарегистр. 18-11-2005 | Отправлено: 22:58 18-11-2005 | Исправлено: Elroir, 05:50 11-11-2006
ViSiToR



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

Цитата:
ОБЯЗАТЕЛЬНО в кавычки.

Вот наверно из за того что кавычки не постаил в пути
 
cluster

Цитата:
дайте, плз, линк на описание errorlevel'ов

Я как это проводил иследование этого списка ...
 

Цитата:
Я решил провести одно иследование, в результате которого, нужно было выяснить, после какой команды будет проверяться errorlevel, а после какой не будет.
Вобщем результаты, показали что практический после всех команд (известных мне), проверяется уровень ошибочности (errorlevel) предыдущей команды. И если errorlevel равен нулю (0), то выводится сообщение: ok!, а если равен единице (1), то, навернное, ничего не будет выведенно.
 
Я прописал в батнике, наиболее используемые команды, и после каждой из них, поставил строчку для проверки errorlevel.

 
Состав этого батника:
 

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

 
Вывод на экран
 

Цитата:
Я ставил по две паузы после каждой команды if errorlevel 0 echo ok! для того, чтобы на случай если первая не сработает (у меня всегда первая не срабатывала в этом батнике - ну, кроме самой первой, та что в самом начале этого батника, т.к перед ней нет других команд pause), то вторая сработает точно!

 
Добавлено:
ViSiToR

Цитата:
наверно из за того что кавычки не постаил в пути

Оказалось что и это не помогло - кто то ещё пробовал этот способ, у кого он ещё работает? что ещё нужно учитывать?

----------
ViSiToR a.k.a CreatoR
CreatoR это не ник, CreatoR это стиль жизни!

Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 10:35 10-11-2006
Kirillhome



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
ViSiToR
Что не работает? sb2.com?
У меня, похоже, работает...
Обязательно - строка поиска и строка замены - в кавычках!

Всего записей: 426 | Зарегистр. 23-11-2004 | Отправлено: 15:00 10-11-2006
Maza Faka



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Нужно скопировать файл в папку с вложеными подпапками, имена подпапок неизвестны, пример: копируемый файл D:\Install\Config.cfg нужно скопировать в D:\Program\"2-3 папки с неизвестным именем", файл нужно скопировать только в подпапки, имя которых неизвестно, то есть они появляются при запуске программы и пользователь сам задаёт им имя!

----------
Купи 5 чебуреков и собери кошку

Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 16:31 10-11-2006
Kirillhome



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Maza Faka
 
Смотреть в эту сторону:
set /p FolderName="Введите имя папки"

Всего записей: 426 | Зарегистр. 23-11-2004 | Отправлено: 17:16 10-11-2006
cluster

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ViSiToR
на сколько я знаю, эррорлевелов гораздо больше, чем два..

Всего записей: 1720 | Зарегистр. 21-11-2003 | Отправлено: 17:44 10-11-2006
sD31337

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
првиет всем , я недавно писал как прописать команду net share 123=C:\ в риестор чтобы после перезапуска она все время запускалась а подскажите плиз как мне октрыть общий доступ к другому диску напимер к D я пробовал сделать все тоже самое только вместо C писал D ничего не получилось и еще как удалить то что я хочу прописать в риестор ) спасибо
 
вот эта строка //////////////////////////////////////////////////////////////////////////////
 
Reg Add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /f  /v "NetShare" /t "REG_SZ" /d "%windir%\system32\cmd.exe net share plzopenC=c:\\"  
--- я делал так  Reg Add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /f  /v "NetShare" /t "REG_SZ" /d "%windir%\system32\cmd.exe net share plzopenC=c:\\" --- вместо С ставил D , напишите если не трудно как октрыть досуп к D и как убрать из автозагрузки эту строку спасибо

Всего записей: 30 | Зарегистр. 27-10-2006 | Отправлено: 21:41 10-11-2006 | Исправлено: sD31337, 21:48 10-11-2006
Elroir



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
cluster
Сборника errorlevel-ов я нигде не встречал. Иногда при описании команды (на сайте Microsoft в частности) дается список для этой команды. Например, для xcopy  
0 - Files were copied without error.
1 - No files were found to copy.
2 - The user pressed CTRL+C to terminate xcopy.
4 - Initialization error occurred. There is not enough memory or disk space, or you entered an invalid drive name or invalid syntax on the command line.
5 - Disk write error occurred.
 
 
Добавлено:
sD31337
Добавить в автозагрузку "расшаривание" дисков C: и D:

Код:
 
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /f  /v "NetShareC" /t  
/d "%windir%\system32\cmd.exe /c net s hare plzopenC=c:\\"
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /f  /v "NetShareD" /t  
/d "%windir%\system32\cmd.exe /c net s hare plzopenD=d:\\"
 

Убрать из автозагрузки эти строчки

Код:
 
reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v "NetShareC" /f
reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v "NetShareD" /f
 

P.S. Или тебе надо было убрать ту строчку, которую ты уже добавил?
 

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 22:04 10-11-2006
Smitis



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

Цитата:
Как при помощи батника удалить все папки с вложенными подпапками и имеющимися в них файлами, если имена папок неизвестны, пример: нужно удалить все папки и файлы из D:\Temp и при этом не удалить папку Temp

Ну блин... Сколько можно одно и то же разбирать. FAQ, что-ли какой сделать?
Вот наиболее оптимальный вариант:

Код:
 
cd /d folder
rd /s /q folder
 

где folder - нужная папка
 
Добавлено:
ViSiToR

Цитата:
Я решил провести одно иследование, в результате которого, нужно было выяснить, после какой команды будет проверяться errorlevel, а после какой не будет.  
Вобщем результаты, показали что практический после всех команд (известных мне), проверяется уровень ошибочности (errorlevel) предыдущей команды. И если errorlevel равен нулю (0), то выводится сообщение: ok!, а если равен единице (1), то, навернное, ничего не будет выведенно.  
 
Я прописал в батнике, наиболее используемые команды, и после каждой из них, поставил строчку для проверки errorlevel.  

У тебя в батнике грубая ошибка: проверка if errorlevel 0 это проверка на код больший или равный нулю! Т.е. условие сработает практически всегда, кроме специфических случаев, когда программа устанавливает отрицательный код. Я об этом писал, кстати, некоторое время назад.

Цитата:
 
Вобщем результаты, показали что практический после всех команд (известных мне), проверяется уровень ошибочности (errorlevel) предыдущей команды
 

Errorlevel в батнике проверить можно ВСЕГДА, не зависимо от предыдущих команд.
 
Кроме того, насколько помниться (поправьте, если ошибаюсь), программа может при некоторых условиях код устанавливать, а при некоторых - нет, и тогда errorlevel будет старым. Т.е., для правильной проверки errorlevel таких программ, код нужно предварительно установить (обнулить).

Всего записей: 3219 | Зарегистр. 09-02-2003 | Отправлено: 23:25 10-11-2006 | Исправлено: Smitis, 23:26 10-11-2006
ViSiToR



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

Цитата:
Что не работает?

Вобще то ничего не срабатывает, просто на пару секунд запускается окно ком. строки, и всё. Всё в кавычках, но файл создаётся (выходной), и он оказывается пустым. Может это не на любой системе работает (т.е может есть какие то ограниения), всё таки как я понял, это прорграмма на ассемблере.
 
cluster
Цитата:
эррорлевелов гораздо больше, чем два.

Я знаю, я просто проверял возвращается ли вообще код ошибочности той или иной команда, и это было давно .
 
 
 
Добавлено:
Smitis

Цитата:
У тебя в батнике грубая ошибка:

И наверно не одна, как я уже написал...
 

Цитата:
и это было давно .

 
Я тогда ещё слабо понимал что такое errorlevel (если вообще).

----------
ViSiToR a.k.a CreatoR
CreatoR это не ник, CreatoR это стиль жизни!

Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 23:53 10-11-2006
Kirillhome



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

Цитата:
Вобще то ничего не срабатывает, просто на пару секунд запускается окно ком. строки, и всё. Всё в кавычках, но файл создаётся (выходной), и он оказывается пустым. Может это не на любой системе работает (т.е может есть какие то ограниения), всё таки как я понял, это прорграмма на ассемблере.
 

Операционка - Win XP SP2 Rus
Пустой файл у меня получается, если параметры замены передавать без кавычек.
Или - если опустить первый параметр (в данном примере - 0), который, как я понял, обозначает порядковый номер заменяемого фрагмента (т.е. 0 - всюду, 1 - первое вхождение и т.д.)

Всего записей: 426 | Зарегистр. 23-11-2004 | Отправлено: 01:00 11-11-2006
Elroir



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

Цитата:
для правильной проверки errorlevel таких программ, код нужно предварительно установить (обнулить)

Если программа не возвращает при завершении числовое значение, обнуляй - не обнуляй, ничего не даст. Errorlevel не изменится.

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 01:01 11-11-2006 | Исправлено: Elroir, 01:20 11-11-2006
ViSiToR



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Kirillhome
 
Операционка у меня таже. Может играет роль файловая система? у меня Fat32. Ничего не пойму, как ни пытался, я даже создал сначало этот файл (sb2.com), а потом отдельным батником пытался его запускать, но создаётся всегда пустой файл (в котором должен быть результат). Я всё помещал в кавычки, везде писал полные пути, изменял текущий каталог, изменял расширения файла (думал может это только для инишек), пробовал разные параметры замены (русские символы), пробовал разные регистры (а вдруг к регистру чувствителен процесс замены), но ничего из этого не помогло...
Я очень давно хотел найти способ заменять вхождения в обычном файле, используя именно батник (почти только батник), и вот оно нашлось, но как назло, не могу заставить его (этот способ) работать  

----------
ViSiToR a.k.a CreatoR
CreatoR это не ник, CreatoR это стиль жизни!

Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 01:31 11-11-2006
Kirillhome



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
ViSiToR
Проверил под FAT-32 (правда, в Win'98) - тоже работает....
На всякий случай выложил создающий bat-файл и отдельно sb2.com (в одном рахиве) на Slil.Ru
 
Добавлено:
Да, ещё проверил - программа замены (sb2.com) - регистрозависимая! (что для русского, что для английского языка)

Всего записей: 426 | Зарегистр. 23-11-2004 | Отправлено: 02:26 11-11-2006 | Исправлено: Kirillhome, 02:32 11-11-2006
ViSiToR



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

Цитата:
выложил создающий bat-файл и отдельно sb2.com

Спасибо. На удивление, у меня оказался почти такой же состав батника, я свой батник поправил чтобы он был по составу точно как и тот что ты залил, НО, твой работает, а мой нет! минут наверно 30 я колдовал над этими батниками, никак не мог понять, почему два одинаковых батника по составу, работают по разному...
 
И что вы думаете, выяснилось, что они не совсем одинаковы - У меня код батника скопирован с поста, а там после каждой строчки которая предназначена создовать часть программы sb2.com, стоит пробел. Я и прдеставить не мог, что это может повлиять на работу батника. Т.е по сути, создавалась программа с расширением *.com, но с пробелом у расширения, что и вызывало сбой в её работоспособности. Так что на будущее нужно знать, что копировать просто текст из поста, не достаточно, нужно ещё убедиться что правильно скопирован, и что нет лишних пробелов!!! (или чего другого).

----------
ViSiToR a.k.a CreatoR
CreatoR это не ник, CreatoR это стиль жизни!

Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 03:20 11-11-2006
Elroir



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ViSiToR
На первой странице темы, hacsoft написал:

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

Надо, наверно, написать это в шапке.

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 05:33 11-11-2006 | Исправлено: Elroir, 05:35 11-11-2006
Maza Faka



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

Цитата:
Смотреть в эту сторону:  
set /p FolderName="Введите имя папки"

Нет, это не то, пользователь вообще не будет видеть консольного окна, надо я думаю при помощи переменных, тока у меня никак не получается, подскажите ПЛЗ, кто знает...


----------
Купи 5 чебуреков и собери кошку

Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 08:08 11-11-2006
sD31337

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Elroir
Спасибо в очередной раз выручил ) тнх

Всего записей: 30 | Зарегистр. 27-10-2006 | Отправлено: 09:30 11-11-2006
ViSiToR



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

Цитата:
Надо, наверно, написать это в шапке.

И это спустя 100 страниц    
 

Цитата:
пользователь вообще не будет видеть консольного окна

Почему не будет? нужно после этой строке ещё и паузу поставить...
 

Код:
set /p FolderName=Введите имя папки:  
echo %FolderName%
pause
 

 
Переменной %FolderName% будет присвоенно то значение (имя папки), которое введёт пользователь.

----------
ViSiToR a.k.a CreatoR
CreatoR это не ник, CreatoR это стиль жизни!

Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 09:42 11-11-2006
Ol4a

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
bat файл для подключения интернета!!!
 
Люди добрые помогите!!!Я тут целый час потратила читая ваши посты, но так ничего для себя полезного не вынесла..Хотя написаного вроде много всего.
 
Вопрос вот какой: Нужно создать такой файлик который при запуске ОС сразу подключался к интернету. Интернет соединение идет через ДСЛ модем, т.е. адсл доступ. В окошке соединения уже прописаны логин и пароль.
Название соединения вот такое: D-Link Dial-Up PPP Connection
 
 
Если не сложно, не отправляйте меня на ранние посты, я их уже читала и ничего не поняла, напишите плз так чтобы можно было это в файл сразу кинуть, сохранить и уже пользоваться.
 
Заранее спасибо!

Всего записей: 3 | Зарегистр. 11-11-2006 | Отправлено: 11:30 11-11-2006 | Исправлено: Ol4a, 12:49 11-11-2006
Kirillhome



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Maza Faka
Вообще тогда не понимаю, что нужно.
Есть три пути "создания переменных" - запрос их у пользователя, передача в качестве параметра и чтение из какого-либо файла (возможно, и больше, но .... опустим).
 
Я из первого "пожелания" понял, что нужен именно запрос у пользователя.
Если нужно просто передать в качестве параметра, то тогда делаем примерно так:
 
my_bat.bat "Folder name"
 
содержимое my_bat.bat (к примеру):
 
@echo off
Set FolderName=%1

Всего записей: 426 | Зарегистр. 23-11-2004 | Отправлено: 12:40 11-11-2006
   

Страницы: 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 » Операционные системы » Microsoft Windows » Задачи на bat-файлах
vu1tur (14-11-2006 16:59): http://forum.ru-board.com/topic.cgi?forum=62&topic=9040


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru