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

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

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

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



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Nagual
Проблема в том, что простыми способами из MAC-а IP не получишь. В организациях, где это действительно надо - установлено спец. программное обеспечение для этих задач.
Если использовать имя сервера, то можно так:

Код:
 
@echo off
for /F "usebackq tokens=5 delims=[] " %%I IN (`"tracert SERVERNAME | find "Tracing""`) DO call :setproxy %%I
goto :EOF
 
:setproxy
echo %1
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v "ProxyEnable" /t REG_DWORD /d 00000001 /f > nul
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v "ProxyServer" /d  %1:8080 /f > nul
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v "ProxyOverride" /d "<local>" /f > nul
reg add "HKLM\SYSTEM\CurrentControlSet\Hardware Profiles\Current\Software\Microsoft\windows\CurrentVersion\Internet Settings" /v "ProxyEnable" /t REG_DWORD /d 00000001 /f > nul
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v "ProxyEnable" /t REG_DWORD /d 00000001 /f > nul
 
 
 
Добавлено:
sD31337

Цитата:
при запуске одного запускался второй  

Чего-то я торможу. Приведи пример.

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

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ну например я создал какойто *bat мне надо его замаскиравать самый ппростой способ я думаю это склеить его какой нить прогой с другим каким нить файлом , извеняюсь что не чисто по теме бат но все равно относится к ней) или может обьясните мне как скрыть содержание батника , чтобы было не так  
///////////////////\пример\//////////////////////////
@echo off  
mkdir............ и так далее а например так
цук34№;%№;%"№ ) ну чтоб никто не дагадался что в нем есть  
еще

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



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
помогите плс.  
 
@echo off  
if "%1"=="" goto exit  
chcp 1251 > nul  
for %%i in ( %1*.* ) do (  
del "%%i" 2>nul > nul  
if not exist %%i ( echo Файл "%%i" удален. ) else ( call :choice "%%i" )  
)  
goto exit  
   
:choice  
setlocal  
set del_choice=  
set /p del_choice=Файл %1 защищен от удаления. Удалить его?    
if not '%del_choice%'=='' set choice=%choice:~0,1%  
if /I '%del_choice%'=='Y' call :force %1  
if /I '%del_choice%'=='Д' call :force %1  
endlocal  
goto exit  
   
:force  
del /f /q %1    
echo Файл %1 удален.  
   
:exit  
 
 
 
вот батник который удаляет все файлы которые начинаються на букву которая задаеться параметром. А скрытые файлы спрашивает удалить или нет.  
проблема в том что в cmd.exe вместо русских букв пишуться караказябры (winxpsp2 тестилось на 3х компах)  
помогите пожалуйста исправить чтобы писалось по русски.

Всего записей: 89 | Зарегистр. 24-01-2005 | Отправлено: 22:01 02-11-2006
GaDiNa



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

Всего записей: 1538 | Зарегистр. 17-06-2003 | Отправлено: 22:21 02-11-2006
Elroir



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sD31337
Вот теперь понятно. Поищи в google, что-нибудь типа "bat to exe". Вот один из вариантов.
 
loat
1. Удали из кода строчку "chcp 1251 > nul"
2. Открой окошко cmd, там запусти edit. В открывшемся редакторе набери весь код. Это даст тебе русский язык в 866-ой кодовой странице.
3. Проверь как работает.

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



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Доброго времени суток.
 
Есть файли с именами такого вида:
 
bd0307370268_2006-11-02__08-02-35.674.bad
bd0307370269_2006-11-02__08-02-35.767.bad
bd0307370270_2006-11-02__08-02-35.955.bad
 
В имени этих файлов совпадает цифра 30737 - будем называть ее - КОД, и цифра 35 - будем называть ее СЕРИЯ ПАКЕТА.  
Еще в имени каждого файла есть цифра стоящая после точки, но перед расширением, например 674 - назовем ее - НОМЕР ПАКЕТА.
 
В одном каталоге есть очень много наборов по три-четыре файла у которых совпадает КОД и СЕРИЯ ПАКЕТА.
 
например следующий набор:
 
bd0307370271_2006-11-02__08-02-36.298.bad
bd0307370272_2006-11-02__08-02-36.173.bad
bd0307370273_2006-11-02__08-02-36.048.bad
 
тут КОД тоже равен 30737, а СЕРИЯ ПАКЕТА = 36
 
В каждом наборе есть файл у которого НОМЕР ПАКЕТА наибольший.
 
Мне нужно написать такой скрипт, который удалит из этого каталога ВСЕ файлы кроме файлов с НАИБОЛЬШИМ НОМЕРОМ ПАКЕТА...
 
Тоесть например из двух, приведеных выше наборов файлов скрипт должен оставить два файла:
 
bd0307370270_2006-11-02__08-02-35.955.bad
bd0307370273_2006-11-02__08-02-36.048.bad
 
Посоветуйте что можно сделать..
 

Всего записей: 1538 | Зарегистр. 17-06-2003 | Отправлено: 22:43 02-11-2006 | Исправлено: GaDiNa, 22:43 02-11-2006
Elroir



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GaDiNa
Да... задачки у тебя.
Вот, что получилось:

Код:
 
@echo off
for %%I in (*.bad) DO call :аprocess %%I
goto :EOF
 
:аprocess
setlocal enabledelayedexpansion
set full_name=%1
set code=%full_name:~3,5%
set pser=%full_name:~31,2%
set pnum=%full_name:~34,3%
set bigger=%full_name:~34,3%
for %%J IN (???%code%*%pser%.???.bad) DO (
set name=%%J
set test=!name:~34,3!
if /I !test! GTR !bigger! ( set bigger=!test! )
)
for %%K IN (???%code%*%pser%.???.bad) DO call :аdel_small %%K %bigger%
goto :EOF
 
:аdel_small
set ntd=%1
set ntd_num=%ntd:~34,3%
IF NOT %ntd_num% EQU %2 del %1
 

Прежде чем запускать, сохрани на всякий случай свои файлы.

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

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sD31337
 
Я для склейки батника и каких-либо еще файлов в один exe-файл использую самораспаковывающийся архив winrar. У него есть фича запускать некую программу после распаковки, а саму распаковку проводить во временную папку, которая становится текущей, а после работы самоуничтожается.
 
Пример команды архивирования (склейки батника и друхих файлов в exe):
 
winrar a имяПолучаемогоEXE -sfx -ep1 -zcomment *.*
 
Содержимое файла comment:
 
tempmode
setup=имяТвоегоБатника

Всего записей: 23 | Зарегистр. 03-04-2006 | Отправлено: 05:36 03-11-2006 | Исправлено: VladimirKvach, 05:42 03-11-2006
ViSiToR



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
VladimirKvach
Зачем так извращаться - Есть замечательная прога именно для компилляции батников (можно включать в екзешник дополнительные файлы) - Quick Batch File Compiler
Если нужно, могу залить, правда версия не из новых.

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

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

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ViSiToR
 
Вообще я компилировал батник в exe не ради цели получить exe как таковой, а чтобы каким-либо образом пересылать на удаленный филиал один файл, чтобы не квалифицированный пользователь его запустил, при этом распаковались нужные файлы и записались в нужные места. При этом, если файл пересылается не полностью (из-за обрыва связи), то ничего вообще не происходит. Winrar с описанной выше технологией для этого вполне подходит.
 
А вообще автору вопроса теперь есть из чего выбрать.

Всего записей: 23 | Зарегистр. 03-04-2006 | Отправлено: 12:54 03-11-2006
Maza Faka



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
bat файл с таким содержанием:
 
For %%f in (*.mp3) do del %%f /Q
 
Почему не удаляются файлы с длинными и русскими именами? Может нужно какой нибудь параметр использовать?

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

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Maza Faka
Нужно в команде удаления %%f в кавычки заключить...

Всего записей: 1247 | Зарегистр. 12-10-2006 | Отправлено: 17:38 03-11-2006
sD31337

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ViSiToR
залей если не трудно 1snake1@mail.ru  
спасибо  
ViSiToR
Elroir
Спасибо вам огромно за то что помагаете таким ламакам как я )  
 
Добавлено:
Всем првиет у меня два вопроса,
1 можно ли в одном батнике создать  несколько сценариев ?
ну наприме @echo off
                  ///////////
/                ///////////------пример команд)
                 ///////////
                  //////////
                       end
и сразу же еще
                @echo of
              /////////////
             / ///////////
                /////////
            /////////////  
              end --------------------они будут работать ?  
и второй вопрос скарей даже не вопрос а задача ) существует такой скрипт каторый открывает доступ к cmd в irc можно ли создать батник каторый бы создавал этот скрипт и кидал его в папку  с MIRC ? ну например echo ----------<тот самый скрипт >script.vbs или что то типа того  
                                                                 xcopy "этот скрипт" в папку с Mirc по умолчанию на С:\Program Files\NeoRa\Trion ? Спасибо

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



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

Цитата:
Почему не удаляются файлы с длинными и русскими именами?

Следуй совету от BorlandIMHO, и в начало скрипта поставь chcp 1251:
 

Код:
 
chcp 1251
For %%f in (*.mp3) do del "%%f" /Q

 
sD31337

Цитата:
залей если не трудно

Залил
 

Цитата:
можно ли в одном батнике создать  несколько сценариев ?

Не совсем понятно, что значит несколько? батник устрен так, что от его начало, и к концу, выполняются команды, если есть перенаправляющие в определённую метку, то команды могут быть пропущены. Для чего нужно два сценария в одном скрипте? чтобы они выполнились один сразу после другого? так это будет как один целый сценарии, можно с таким же успехом, вызывать другой батник из одного батника, который кстати, можно этим же (родительским) батником и создать.
 

Цитата:
можно ли создать батник каторый бы создавал этот скрипт и кидал его в папку  с MIRC ?

Можно - Приведи скрипт сюда, и я помогу тебе его построить в батнике. По идее, это не сложно, нужно через команду echo текст скрипта > Script.vbs прописывать по-строчно всё содержание скрипта, правда с некоторыми символами нужно повазиться, например, символ & не перейдёт в файл, т.к он будет принят за разделитель между командами (echo и тем что идёт после &). В таком случае, нужно перед символом подставлять знак ^ (^&), а иногда и два, а то и три таких знака. В общем, лучше скрипт приведи - Но примерно это будет так:
 

Код:
echo состав скрипта > Script.vbs
echo другая строка состава скрипта >> Script.vbs
echo и ещё строка скрипта >> Script.vbs
copy /y "Script.vbs" "С:\Program Files\NeoRa\Trion\Script.vbs"


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

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

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
FOR /F "tokens=1" %%i in (C:\inst\ipnew.txt) do (ping  -n 1 %%i|find /I "TTL=">>nul  
IF %ERRORLEVEL%==0 echo %%i>>C:\inst\set.txt)
Подскажите почему %ERRORLEVEL%=0 независимо доступен узел или нет,
где ошибка.
Заранее спасибо.

Всего записей: 4 | Зарегистр. 10-10-2006 | Отправлено: 14:04 04-11-2006
evle



1 + int rand(100);
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
userlow

Цитата:
Подскажите почему %ERRORLEVEL%=0 независимо доступен узел или нет,
где ошибка.  

Переменные в процентах подставляются до выполнения строки (в данном случае строкой считается весь оператор for). Смотри пример "Разименовывание переменных" из шапки.

----------
For every complex problem, there is a solution that is simple, neat, and wrong.

Всего записей: 2110 | Зарегистр. 03-02-2005 | Отправлено: 14:15 04-11-2006
Maza Faka



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

Цитата:
Нужно в команде удаления %%f в кавычки заключить...

Пасибо выручил

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

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Переменные в процентах подставляются до выполнения строки (в данном случае строкой считается весь оператор for). Смотри пример "Разименовывание переменных " из шапки.[/q]
 
Посмотрел раздел Разименовывание переменных  
Как это может мне помочь.
Вернее ничего не понял о Разименовывание переменных.
 
 
 

Всего записей: 4 | Зарегистр. 10-10-2006 | Отправлено: 18:29 04-11-2006
Elroir



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
userlow
Перед "for", поставь строчку SETLOCAL ENABLEDELAYEDEXPANSION, a вместо %errorlevel% поставь !errorlevel!.

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 19:06 04-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.Board
© Ru.Board 2000-2020

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru