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

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



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Прашу пращения не судить строго...   не как не магу отвыкнуть от дурацкой привычки .... теперь буду писать коректнее... что бы было легче читать ...  
Вопрос остаеться актуальным ... есть желающие помочь ???




Коверканье русского языка (п. 2.5.5. главы VIII Соглашения по использованию)
подъём темы (п. 2.8.3. главы VIII Соглашения по использованию)

Всего записей: 15 | Зарегистр. 18-01-2005 | Отправлено: 12:36 31-03-2006 | Исправлено: vu1tur, 16:04 31-03-2006
KapralBel



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

Код:
 
@Echo Off
For %%a in (a b c) Do Call :_F1 %%a
GoTo :EOF
 
:_F1
MD %1
PushD %1
For %%a in (a b c) Do Call :_F2 %%a
PopD
GoTo :EOF
 
:_F2
MD %1
PushD %1
For %%a in (a b c) Do Call :_F3 %%a
PopD
GoTo :EOF
 
:_F3
MD %1
PushD %1
For %%a in (a b c) Do Call :_F4 %%a
PopD
GoTo :EOF
 
:_F4
MD %1
GoTo :EOF
 

 
Вместо a b c поставь a b c..z
 
PS
В ФАР менеджер - плагин MkDir Plugin 1.30
{a-z}\{a-z}\{a-z}\{a-z}

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 13:20 31-03-2006 | Исправлено: KapralBel, 17:01 31-03-2006
mixams



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
да ... мне такого не дано ... даж и не знал что Это так все Просто ...
Блин навазюкаЛся за три Дня .....   аж в глазах ряБит ... Обьявляю Благодарность В размере Агроменного СпасиБА !!!! ))





флуд (п. 2.8.2. главы VIII Соглашения по использованию)

Всего записей: 15 | Зарегистр. 18-01-2005 | Отправлено: 15:14 31-03-2006 | Исправлено: vu1tur, 16:05 31-03-2006
mixams



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
да ....а люди здесь злые ...нынче




флуд. Прекращай.

Всего записей: 15 | Зарегистр. 18-01-2005 | Отправлено: 19:47 01-04-2006 | Исправлено: vu1tur, 18:33 03-04-2006
seggah

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

Всего записей: 75 | Зарегистр. 08-11-2005 | Отправлено: 17:01 03-04-2006
KapralBel



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
seggah
Ну сходу я такую задачу (полной минимизации) я и на других языках (С++) не напишу.
Придеться сделать мат.модель процесса, оптимизировать для приемлемых сроков выполнения (тут как прикладной математик ) говорю. А уж на батничке - только в том варианте как я предложил - полной минимизацией не пахнет, но для прикладных целей достаточно

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 17:33 03-04-2006
Romero_Ekb



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вот такая задача:
Нужно скрыть от пользователя вкладку "Подключения" в Свойствах Обозревателя.
Для этого надо создать DWORD "ConnectionsTab"=1 в HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Control Panel. Но по-умолчанию у обычного "смертного" пользователя нет прав на запись в этот раздел. Есть вариант создать параметр в соответствующем разделе HKEY_USERS\S-1-5-21-..., запустив некий скрипт от имени админа. Но тогда надо узнать соответствующее учетке пользователя SID-имя. Здесь можно, зная, что в имени пользователя есть подстрока "ххх", найти его SID в HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList.
Просьба помочь с CMD-шником, работающим в Win2000 (сам командный файл будет запущен от имени Администратора - с этим проблем нет). Или предложить более простое решение задачи.

Всего записей: 98 | Зарегистр. 02-02-2004 | Отправлено: 16:43 04-04-2006
KapralBel



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Romero_Ekb
Support Tool  обычно присутствует на компакте с виндой
Утилита WhoAmI выдает:

Код:
 
C:\Program Files\Support Tools>WhoAmI /user /sid
[User]     = "XXXXX\YYYY"  S-1-5-21-2512563947-891753078-1200190331-1109
 

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 16:56 04-04-2006
uZver



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
и с нова наверное из разряда RTFM, но спрошу  
есть следующий батник

Код:
 
set N=0
for %%f in (*.txt) do (
set /a N+=1
arj m -e -y test%N% .\%%f -jm1
)
 

нужно пожать каждый файл в отдельный архив со сквозной нумерацией,  
так вот почему то set /a N+=1 игнорируется(тоесть N=0). Хотя у меня есть приблизительно такой же код (только для строк одного файла), где счетчик бегает нормально.
 
прочитал справку по set не нашел ответа

Всего записей: 195 | Зарегистр. 10-10-2003 | Отправлено: 19:40 04-04-2006
abz



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

Цитата:
Для этого надо создать DWORD "ConnectionsTab"=1 в HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Control Panel. Но по-умолчанию у обычного "смертного" пользователя нет прав на запись в этот раздел.

Ну так и запусти с правами администратора как ты хочешь сделать тут:

Цитата:
Есть вариант создать параметр в соответствующем разделе HKEY_USERS\S-1-5-21-..., запустив некий скрипт от имени админа.

Зачем тебе SID?
 
Тут два варианта:
 
1) Дать юзеру временно права администратора для записи в ветку HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Control Panel
 
2) Запустить регфайл от имени администратора.
 

Всего записей: 14936 | Зарегистр. 04-11-2002 | Отправлено: 20:24 04-04-2006
Lexua



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
uZver
может N=N+1

Всего записей: 2829 | Зарегистр. 15-10-2002 | Отправлено: 22:07 04-04-2006
Romero_Ekb



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
abz
Так в том то и дело, что заранее неизвестен точно путь HKEY_USERS\S-1-5-21-...
Для того и SID.
 
KapralBel
Я не знаю точное имя пользователя - нужен поиск по подстроке.

Всего записей: 98 | Зарегистр. 02-02-2004 | Отправлено: 06:41 05-04-2006
jak_forest

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
uZver
в этой ветке есть уже упоминание решения.  

Код:
 
echo off
setlocal ENABLEDELAYEDEXPANSION
set n=0
for /l %%i in (1,1,5) do (
    set /a n=!n!+1
    echo !n!
)
 

Дальше сам сможешь ?

Всего записей: 55 | Зарегистр. 07-12-2005 | Отправлено: 08:44 05-04-2006
tomegadeth



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
как отметил jak_forest, все дело в setlocal ENABLEDELAYEDEXPANSION и !N! вместо %N% - вот и решение

Код:
@echo off
setlocal ENABLEDELAYEDEXPANSION
set N=0  
for %%f in (*.txt) do (  
set /a N+=1  
arj m -e -y test!N! .\%%f -jm1  
)
 

Всего записей: 560 | Зарегистр. 22-11-2004 | Отправлено: 09:01 05-04-2006
uZver



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
всем спасибо
ну вот и я стал еще немного умнее  
до исользования setlocal ENABLEDELAYEDEXPANSION догадался,  
а вот то что надо использовать ! забыл.  

Всего записей: 195 | Зарегистр. 10-10-2003 | Отправлено: 10:06 05-04-2006
abz



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

Цитата:
Так в том то и дело, что заранее неизвестен точно путь HKEY_USERS\S-1-5-21-...  
Для того и SID.

Да туда вообще лазить не нужно. Все действия проводятся с веткой HKCU

Всего записей: 14936 | Зарегистр. 04-11-2002 | Отправлено: 13:05 05-04-2006
Serge2005

Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Скажите, пожалуйста... Есть файл такой структуры default.bar:

Код:
 
Buttoncount=58
button1=%ProgramFiles%\Winamp\winamp.exe,3
cmd1=%ProgramFiles%\Winamp\winamp.exe
path1=%ProgramFiles%\Winamp\
iconic1=1
menu1=WinAmp
button2=%Commander_path%\Plugins\wfx_TWinAmp2_1.5.2\WAC.exe,6
cmd2=%Commander_path%\Plugins\wfx_TWinAmp2_1.5.2\WAC.exe
param2=prev
path2=%Commander_path%\Plugins\wfx_TWinAmp2_1.5.2\
menu2=Предыдущий трек
button3=%Commander_path%\Plugins\wfx_TWinAmp2_1.5.2\WAC.exe,9
cmd3=%Commander_path%\Plugins\wfx_TWinAmp2_1.5.2\WAC.exe
param3=play
path3=%Commander_path%\Plugins\wfx_TWinAmp2_1.5.2\
menu3=Воспроизведение
....58
 

нужно, чтоб параметры можно было менять независимо от счетчика, то есть, как я себе представляю, сначала задаю поиск на "%ProgramFiles%\Winamp\winamp.exe,3", из него получаю, что это именно button1, пото достаю имеено 1, а потом прописываю в menu1 новое значение. Это возможно?

Всего записей: 554 | Зарегистр. 11-02-2006 | Отправлено: 13:37 05-04-2006
SiR666



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
подскажите плиз ... что-то я туплю .
как в бат файле получить переменную с датой за 3 дня до текущей в формате ГГГГММДД?
все ... сам разобрался.  
Set dt=%Date%  
Set dtDay=%dt:~0,2%  
Set dtMonth=%dt:~3,2%  
Set dtYear=%dt:~6,4%  
Set /a dtDay=%dtDay%-3%  
If %dtDay%==0 (Set /A dtMonth=%dtMonth%-1)  
If %dtMonth%==0 (Set /a dtYear=%dtYear%-1) & (Set dtMonth=12)  
If %dtDay%==0 (  
  If %dtMonth%==1 (Set dtDay=31)  
  If %dtMonth%==3 (Set dtDay=31)  
  If %dtMonth%==5 (Set dtDay=31)  
  If %dtMonth%==7 (Set dtDay=31)  
  If %dtMonth%==8 (Set dtDay=31)  
  If %dtMonth%==10 (Set dtDay=31)  
  If %dtMonth%==12 (Set dtDay=31)  
  If %dtMonth%==2 (Set dtDay=28)  
  If %dtMonth%==4 (Set dtDay=30)  
  If %dtMonth%==6 (Set dtDay=30)  
  If %dtMonth%==9 (Set dtDay=30)  
  If %dtMonth%==11 (Set dtDay=30)  
)  
Set dt2=%dtYear:~0,4%%dtMonth:~0,2%%dtDay:~0,2%%

Всего записей: 199 | Зарегистр. 16-09-2004 | Отправлено: 16:35 05-04-2006 | Исправлено: SiR666, 17:42 05-04-2006
Saftor



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый вечер подскажите пожалуйста как сделать следущие так как только начал изучать cmd: У меня есть WinSrv2000Sp4 мне нужно создать .cmd файлик который делал бы удаление всех файлов в папке e:\Обмен\ , но при этом оставлял папки пользователей (допустим Иванов, Петров, Сидоров......), а также удалял все папки и файлы в папке Иванов! У меня получается что все файлы он удаляет, а вот папки вложенные в (Иванов) нет!?  
Как сделать чтоб удалялись так же вложенные папки и файлы в папке пользователя? А вот ещё у меня он так же нехочет удалять временны файлы (~$дачи КО.doc и так далее?
вот что у меня получилось:
c:
cd \progra~1\ca\bat\
del %TEMP%\*.* <y.cdm
del g:\temp\*.* <y.cdm
xcopy /e /y C:\Обмен\*.* D:\temp\
Del e:\Обмен\*.* <y.cdm
del /s/q e:\Обмен\*.*

Всего записей: 329 | Зарегистр. 07-12-2005 | Отправлено: 17:33 05-04-2006
jak_forest

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SiR666
маленькая подсказка.
по крайней мере в коде  

Код:
If %dtDay%==0 (Set /A dtMonth=%dtMonth%-1)

у тебя ошибка. нужно вместо == использовать LEQ что-то на подобии

Код:
If %dtDay% LEQ 0 (Set /A dtMonth=%dtMonth%-1)

 
 
Добавлено:
Saftor
я так понимаю в файле y.cdm у тебя напсана буква "Y". если да, то в принципе твой скрипт немного сокращается. Файлы ~$дачи КО.doc и т.п. не удалялись, потому что они были скрытые. перед удалением снимаем со всех файлов атрибут "Скрытый" и потом чистим.
попробуй вот этот скриптик (не забыдь удалить пробелы в конце каждой строки после того как скопируешь скрипт отсюда).

Код:
del /q /s %TEMP%\*.*  
del /q /s g:\temp\*.*
xcopy /e /y C:\Обмен\*.* D:\temp\  
Del /q /s e:\Обмен\*.*
attrib -h 1\*.* /s /d
del /s/q e:\Обмен\*.*
rd /q /s e:\Обмен\Иванов
md e:\Обмен\Иванов
 

Всего записей: 55 | Зарегистр. 07-12-2005 | Отправлено: 08:52 06-04-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