Ru-Board.club
← Вернуться в раздел «Microsoft Windows»

» Задачи на bat-файлах 2

Автор: igor_andreev
Дата сообщения: 09.03.2007 14:06
ViSiToR
Maza Faka
А вы принципиально только свои посты читаете? Это правильно Но я две страницы назад еще упомянул, что del /f /s /q выводит все сама, как надо(расширения компроцессора у всех по умолчанию включены, подразумевается). Достаточно перенаправить ее вывод в файл:
del /f /s /q folder\*.mp3 >test.log 2>&1
и не надо разводить муть с циклами for
Открыл один файл mp3 в папке TEST\SUB_DIR_3 плэйером, его удалить DEL не "шмогла".

Кликнуть по картинке для увеличения... Что я делаю не так?
Автор: Maza Faka
Дата сообщения: 09.03.2007 14:26
s800

Цитата:
как запустить bat файла на др.машине сети?


Psexec - утилита запуска заданий на удаленном компьютере
Формат командной строки:

psexec \\computer][-u user [-p psswd]][-s|-e][-i][-c [-f|-v]][-d][-][-a n,n,...>] cmd [arguments]

Примеры использования:
psexec \\PC3 program.exe - выполнить на удаленном компьютере program.exe. Выполняемая программа должна быть в путях поиска.
psexec \\PC3 -c C:\SCRIPTS\program.exe Выполняемая программа копируется на удаленный компьютер из C:\SCRIPTS и выполняется. Скачать 139 кб
Автор: Elroir
Дата сообщения: 09.03.2007 14:40
Maza Faka
Это я уже советовал - ему не подходит (http://forum.ru-board.com/topic.cgi?forum=62&topic=9040&start=920,#8)

FXPELIVE

Цитата:
Кто знает как узнать серийный номер компакт-диска и это значение сохранить в переменной %cdnum%


Код:
@echo off
setlocal
set "cdrom_letter=e:"
for /f "usebackq skip=1 tokens=5" %%a in (`vol %cdrom_letter%`) do set "cdnum=%%a"
echo %cdnum%
Автор: ViSiToR
Дата сообщения: 09.03.2007 17:00
igor_andreev

Цитата:
вы принципиально только свои посты читаете? Это правильно Но я две страницы назад еще упомянул, что del /f /s /q выводит все сама, как надо(расширения компроцессора у всех по умолчанию включены, подразумевается). Достаточно перенаправить ее вывод в файл:
del /f /s /q folder\*.mp3 >test.log 2>&1

Нет, не принципиально (пишу за себя ), извени, но я не заметил этого в твоих постах (хотя почти всегда к ним присматриваюсь).

А как с подобным примером записать лог с дописыванием времени каждой попытки удаления? (как в моём примере).
Автор: JohnRD
Дата сообщения: 09.03.2007 18:21
igor_andreev
спасибо
есть вопрос такого плана
iKey_to_hdd.cmd

Код: reg add HKLM\SOFTWARE\MDPREI\Cryptography\KeyDevices\KEYFILE /v DLL /t REG_SZ /d %SystemRoot%\system32\reader\keyfile.dll /f >>1.log
reg add HKLM\SOFTWARE\MDPREI\Cryptography\KeyDevices\KEYFILE /v FileName /t REG_SZ /d %SystemRoot%\system32\reader\keyfile.dat /f >>1.log
copy /y keyfile.dat %SystemRoot%\system32\reader\ >>1.log
copy /y keyfile.dll %SystemRoot%\system32\reader\ >>1.log
reg add HKCU\Software\MDPREI\CRYPTOGRAPHY\KEYDEVICES /v default /t REG_SZ /d KEYFILE /f >>1.log
reg add HKCU\Software\MDPREI\CRYPTOGRAPHY\KEYDEVICES\KEYFILE /v connect /t REG_SZ /d авто /f >>1.log
Автор: igor_andreev
Дата сообщения: 09.03.2007 18:23
ViSiToR

Цитата:
А как с подобным примером записать лог с дописыванием времени каждой попытки удаления? (как в моём примере).
Ну у меня mtee завсегда есть

Код:
del /f /s /q folder\*.mp3 | mtee /d /t /+ log.txt
Автор: Korshikov_Andrey
Дата сообщения: 10.03.2007 13:53
Как из командной строки изменять владельцев объектов в Active Directory?
Хочется чего-то вроде SetACL (setacl.sourceforge.net) для работы с AD. На сайте SetACL в Feature Requests с 2003 года значится "ACL/ACE manipulation on AD objects", но, похоже, развитие проекта остановилось...
Оффтоп. Подскажите, может быть можно сменить всех владельцев у всех объектов AD, пусть и без командной строки?
Автор: igor_andreev
Дата сообщения: 10.03.2007 14:40
Korshikov_Andrey
http://forum.ru-board.com/forum.cgi?action=filter&forum=8&filterby=topictitle&word=Active+Directory
в Администрировании наверное быстрей ответят
Автор: SERG10
Дата сообщения: 11.03.2007 10:45
Помогите с задачей A+B=C

Где А:
Комп: Windows Server 2003
Права: Администратор
На компе: 2 расшареные папки "X" "Y"
Active Derictory: 2 группы (бухгалтерия кадры) (в каждой группе по несколько человек)

Где С (это то что нужно получить)
Нужно на диске X и Y получить папки бухгалтерия и кадры и в каждой из них получить папки с фамилиями сотрудников соответсвующие своим отделам. А только на диске Y в папке каждого сотрудника создать папку личная, и дать права на доступ к этой папке только этого сотрудника (без администраторов локальных и доменных).
Ну и самое сложное, что даже в теории мне было трудно продумать: как сделать работу этого бат файла или скрипта vbs автоматизированным, чтобы при появлении нового сотрудника можно было прогнать этот скрипт и но создал папки только для него.

Ну про В говорить не стоит, ведь всем понятно что это Вы и ваши зания.

Заранее благодарен, и огромная просьба, если Вы в состоянии решить хоть кусочек от этой задачи - отпишитесь!
Автор: winvik
Дата сообщения: 11.03.2007 11:31
Всем спасибо за помощь!!
Вот что получилось у меня в итоге с задачей удаления MP3шек:

chcp 1251 > nul
cd d:\test
Set Ext=*.mp3, *.avi, *.wav
del /f /s /q %Ext% >>test.log 2>&1

А как бы теперь сделать чтобы при каждом запуске скрипта создавался новый лог-файл? Неважно с каким именем, можно вместо имени дату, можно log1,log2,3 ... ?

to igor_andreev: логи начальство желает видеть...
Автор: ViSiToR
Дата сообщения: 11.03.2007 12:20
winvik

Цитата:
сделать чтобы при каждом запуске скрипта создавался новый лог-файл? Неважно с каким именем, можно вместо имени дату, можно log1,log2,3 ... ?

Если неважно имя то можно в начале батника поставить это:


Код: echo > test.log
Автор: winvik
Дата сообщения: 11.03.2007 13:30

Цитата:
ViSiToR

при первом запуске у меня создался файл test.log, при втором - просто test без расширения... при последующих запусках скрипта весь лог пишется в последний файл (дописывается в конец).
?

Добавлено:
извиняюсь )) пробелы надо было убрать в конце строк )) все работает )) спасибо еще раз ))
Автор: winvik
Дата сообщения: 12.03.2007 07:54
В итоге решено было таки логировать все в один файл, но с указанием даты и времени удаления. Вот что получилось:

chcp 1251 > nul
cd d:\test
Echo ^______________________^ >>log.txt
Echo %Date%^>^> %Time:~0,-3%^>^> >>log.txt
Set Ext=*.mp3, *.avi, *.wav, *.vob, *.mpeg, *.mpg, *.wma
del /f /s /q %Ext% >>d:\test\log.txt 2>&1

Выдает это чудо лог такого вида:
______________________
12.03.2007>> 10:28:12>>
Не удается найти D:\test\*.mp3
______________________
12.03.2007>> 10:34:48>>
Удален файл - D:\test\juanes_-_la_camisa_negra.mp3

Правда в лог пишется время старта скрипта, а не фактическое время удаления каждого файла, но это мелочи )) Скрипт пробегает по папкам довольно шустро... Еще раз всем спасибо за участие )))
Автор: JohnRD
Дата сообщения: 12.03.2007 19:38
igor_andreev большое спасибо за помощь

подскажите пожалуйста gsar может читать и менять
1.ini

Код: SecuritySystem=1
WorkflowSystem=-
ExchangeSystem=-
ExchangeFile=-
iKeyLogOn=-
.........
Автор: Tipulatoid
Дата сообщения: 12.03.2007 21:24
JohnRD
Вот так без использования сторонних утилит. Может и покороче можно код написать - как умею


Код: @echo off
setlocal enabledelayedexpansion
set "file=1.ini"

find /n "iKeyLogOn=" %file% > nul & if errorlevel 1 goto insert

for /f "delims=[]" %%a in ('find /n "iKeyLogOn=" %file%') do set num_line=%%a

set counter=1
for /f "tokens=2 delims==" %%a in (%file%) do (
if /i !counter!==%num_line% (
set znak=%%a)
set /a counter=!counter!+1)

if /i %znak%==+ goto end

del /q tmp_file 2>nul
set counter=1
for /f "tokens=*" %%a in (%file%) do (
if /i !counter!==%num_line% (echo iKeyLogOn=+>>tmp_file
) else (
echo %%a>>tmp_file)
set /a counter=!counter!+1)

del /q %file% 2>nul
ren tmp_file %file%
goto end

:insert
del /q head.del 2>nul
del /q bottom.del 2>nul

set counter=1
for /f "tokens=*" %%a in (%file%) do (
if /i !counter! leq 4 (echo %%a>>head.del
) else (
echo %%a>>bottom.del)
set /a counter=!counter!+1)

del /q %file% 2>nul
type head.del> %file%
echo iKeyLogOn=+>> %file%
type bottom.del>>%file%

del /q head.del 2>nul
del /q bottom.del 2>nul

:end
Автор: Smitis
Дата сообщения: 12.03.2007 21:37
JohnRD
Это принципиально вставить в 5-ю строку? Если нет:

Код:
type 1.ini |find /i "iKeyLogOn=+" || echo iKeyLogOn=->>1.ini
type 1.ini|gsar -s"iKeyLogOn=-" -r"iKeyLogOn=+" -F >2.ini
Автор: igor_andreev
Дата сообщения: 12.03.2007 22:57
Smitis
Но у тебя же первая строка ищет именно то, что надо("iKeyLogOn=+")! Логичней сделать в первой строчке тогда уже после удачного завершения find /i "iKeyLogOn=+" && exit /b. Ну или не exit /b, а переход на нужную метку.
В общем, я бы так делал:

Код:
@ECHO OFF

TYPE 1.INI | FIND /I "iKeyLogOn=+" && (ECHO iKeyLogOn Plus, all OK & EXIT /B)

TYPE 1.INI | FIND /I "iKeyLogOn=-" && (TYPE 1.INI | GSAR -s"iKeyLogOn=-" -r"iKeyLogOn=+" -F >2.INI & EXIT /B)

ADDLINE iKeyLogOn=+ 5 1.INI
Автор: ViSiToR
Дата сообщения: 12.03.2007 23:07
winvik

Цитата:
Правда в лог пишется время старта скрипта, а не фактическое время удаления каждого файла

А я придлагал вариант где пишется время конкретного исполнения команды Dir (см. пару страниц назад).
Автор: Smitis
Дата сообщения: 12.03.2007 23:43
igor_andreev
Ну, в программировании всегда одно и то же можно сделать разными способами. Я выбрал короткий (в смысле, количества букв ). К тому же, у автора не всё понятно. Например, нужно ли создавать 2.ini всегда или нет. Я специально сделал так, что бы создавался всегда.
П.С.
Хотя есть у меня одна неточность... Ну и фиг с ней.
Автор: winvik
Дата сообщения: 13.03.2007 07:27
А вот еще такая задача: сделать логон-скрипт, чтобы он юзеру при входе правил настройки прокси сервера в Internet explorer? Выставлял галку "использовать прокси", добавлял адрес прокси + порт?
Микрософт предлагает скрипт vbs для просмотра этих настроек, а для изменения нету... Кто-нибудь делал подобное?
Автор: Maza Faka
Дата сообщения: 13.03.2007 08:38
winvik

Цитата:
А вот еще такая задача: сделать логон-скрипт, чтобы он юзеру при входе правил настройки прокси сервера в Internet explorer? Выставлял галку "использовать прокси", добавлял адрес прокси + порт?
Микрософт предлагает скрипт vbs для просмотра этих настроек, а для изменения нету... Кто-нибудь делал подобное?



Код:
@Echo off
Reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable /t REG_DWORD /d 1 /f
Reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyServer /t REG_SZ /d 192.168.0.1:8080 /f
Автор: KapralBel
Дата сообщения: 13.03.2007 11:41
winvik
Вообще конкретно эта задача легче решается политикой домена
Автор: Maza Faka
Дата сообщения: 13.03.2007 11:57
2 Admins
Вот здесь есть неплохая статья по bat файлам, может выложите в шапку?
Автор: Nagual
Дата сообщения: 13.03.2007 12:28
Maza Faka
неплохая статейтка
ALL
итак, уважаемые господа!
поскольку частенько приходится иметь в кривым текстом, созданным различными кривыми скриптами, включая этот, не совсем ровный форум, возникла маза, почему бы не создать батник, который будет в буквальном смысле слова "вылизывать" плохо отформатированный текст
едиственное, надо определиться с параметрами форматирования
и как-то общаком скинуться ими
на вскидку, могу предложить следующие:
два пробела -> один пробел
пробел и перевод строки -> перевод строки
две пустых строки -> одна пустая строка
пробел пустая строка -> пустая строка
и тд и тп
здесь кто сколько сможет, накидайте чего не хватает, ибо все учесть я, ессно, не могу

ну и, ессно, после этого уже надо бы взяться за реализацию
или уже может кто решал проблему, тогда выкиньте сюда сценарий
Автор: KapralBel
Дата сообщения: 13.03.2007 12:32
Maza Faka

Цитата:
Вот здесь есть неплохая статья по bat файлам, может выложите в шапку?
ОК
Пример - получение и обработка списка пользователей

Добавлено:
Nagual
И смысл такого форматирования?
А если 2 пробела имеют смысл?
Автор: Nagual
Дата сообщения: 13.03.2007 13:12
KapralBel
смысл форматирования в его скорости, а правильность можно править в конфиге сценария, если не понятен смысл, объясню
ты копируешь отсюда сценарий, заключенный в теги кода [ code][/code ] и, вне зависимости от его размера, тебе приходится тупо удалять в редакторе концевые пробелы, тратя время и нервы и проклиная кривизну форума, не знакомо такое?
имхо в большинсве случаев два пробела не нужны
если все таки они понадобатся, можно закомментить строку с форматированием пробела, отформатировать все и поставить где надо два пробела или, на крайняк, забить на это и делать все руками, ..., ...
в принципе как раз трабла с пробелом весьма и весьма актуальна и именно в этой теме, то есть написании командных сценариев, так как, например, большинству других скриптов на это, в общем то, по барабану, а тот факт, что они копируются с лишними пробелами на конце, не оказывает на их работу никакого влияния
а здесь все происходит наоборот и вся ветка забита фразами типа "Не работает", "Для работы удалите пробелы" и тд
почему бы не решить проблему, используя сам сценарий, как раз в тему имхо
Автор: KapralBel
Дата сообщения: 13.03.2007 13:32
Nagual
1. тут я не читатель, я писатель
2. Тупо править концевые пробелы не буду. У меня плагин в ФАР Менеджере автоматически их удаляют
3. Если народ не может прочитать в шапке сообщение

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

Ты думаешь они воспользуются советом из той-же шапки насчет форматирующей утилиты?
Автор: JohnRD
Дата сообщения: 13.03.2007 13:56
Tipulatoid спасибо код работает, единственное как ранее говорили некоректно работает с пустыми строками - просто их убивает
Smitis Ваш вариант правда вставляет строку в конец

сам INI состоит из секций разделенных пустыми строками, iKeyLogOn=+ нужно вставить именно во 2ю секцию взамен iKeyLogOn=- или внаглую если нет первого, родное место 10я строка, а строк в файле 2363
замена нужных строк у меня уже работает, но у некоторых пользователей отсутствует стока iKeyLogOn=- и gsar проходит мимо, и нельзя взять шаблонный ini, поскольку у всех свои собственные настройки программы
1.ini

Код: [LanDocs Options]

BDEAlias=UESR_ASDUD
SQLType=DOAOracle

SecuritySystem=1
WorkflowSystem=-
ExchangeSystem=-
ExchangeFile=-
iKeyLogOn=-
wbcontainer=iKey
wbprefix=vcert
iKey=+
DeviceKeyDll=IKeyOld.dll
HandleMsgParam=+
SpellCheckerMode=0
MapiProfile=Microsoft Outlook Internet Settings

ShedulerEnabled=-
SHServerName=172.17.48.32
NewMsgStyle=+
DigitalSignFullMode=-

.......
Автор: ViSiToR
Дата сообщения: 13.03.2007 14:23
Nagual
100% соглашусь с KapralBel - Никто в шапку ради скирпта для очистки пробелов лезть не будет, а те кто не поленятся, через пару дней (если не часов) про этот “обработчик” забудут, так как нужно будет для начала помещать текст в файл, прогонять его через другой батник, и лишь потом наслаждаться(?) результатом

И ещё, так, для общей информации - чтобы совсем не мучаться с удалением пробелов, просто нажал кнопку “Редактировать” в верху сообщения того кто оставил нужный тебе код, и скопировал нормально текст, без никаких пробелов
Автор: igor_andreev
Дата сообщения: 13.03.2007 14:35
JohnRD

Цитата:
работает правильно, едиственное вставляет большими буквами IKEYLOGON=+ но это некритично похоже..

Если критично станет - думаю, для человека, у которого рядом с addline.exe лежит gsar.exe это не проблема -s"IKEYLOGON" -r"iKeyLogOn"

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: Сбой активации XP sp2


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.