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

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

Автор: Cyril Konst
Дата сообщения: 13.11.2007 09:28
soulthiefer
Ты найди сначала утилитку, которая умеет в BIOS время включения изменять. Она ведь для разных BIOS вроде своя должна быть (если вообще существует). Тогда те и батник сделают.
Автор: king_stiven
Дата сообщения: 13.11.2007 09:51

Цитата:
all


Предлагаю внести в шапку:

Важно: предлагая свою задачу, необходимо подробно её описать, включая все варианты и привести пример

Lutvun

Можно включить проверку. чтобы из любой папки noname файлы не трогал.


Цитата:
Также хрошо бы если в имени файла нету "~" чтоб он ево не трогал.

Можно.

Автор: Lutvun
Дата сообщения: 13.11.2007 09:59

Цитата:
Можно включить проверку. чтобы из любой папки noname файлы не трогал.

Такое подходит, папок типа ok\noname там не будет.
Автор: soulthiefer
Дата сообщения: 13.11.2007 10:42
Здравствуйте всем еще раз!
нашел утилитку которая умеет менять в bios время включения
http://www.softforfree.com/files/soft/bilarm.zip
помогите пожалуйста с батником который будет менять это время на 5 минут больше системного на данный момент и выключать комп ! а он должен по идее через 5 мин включиться !
Автор: Smitis
Дата сообщения: 13.11.2007 12:04
soulthiefer

Цитата:
помогите пожалуйста с батником который будет менять это время на 5 минут больше системного на данный момент и выключать комп ! а он должен по идее через 5 мин включиться !

Для начала с правилами форума разберись.
Автор: CriticalError
Дата сообщения: 13.11.2007 12:12

Цитата:
Tipulatoid

Цитата:Используется утилита tasklist.exe Насколько зняю, ее по умолчанию нет в Win XP Home Edition. Тогда надо ее скопировать с Prof. Edition и кинуть в папку %windir%\system32


Большое спасибо, это работает на обычном ХР проф. Но когда я попытался запустить tasklist на XP Embedded, оказалось, что его там нет. Я скопировал tasklist.exe и еще dbghelp.dll, которую он требовал, но, тем не менее, при попытке выполнения tasklist.exe система пишет "ERROR: Provider load failure"

Чего может не хватать системе для запуска tasklist?


Нашел в одном форуме описание именно этой проблемы:


Цитата:
Hello XPe community. I am having a small issue using taskill.exe on my XPe
build. Perhaps somebody could shed some light.

I am simply trying to run a very simaple taskkill.exe command. I am getting
the following message returned:

ERROR: Provider load failure.

I have checked the dependencies for Server Command Line Tools (as this
component contains taskkill.exe) and this looks to be OK.

Any ideas?


После обсуждения чувак сам пришел к решению:


Цитата:
KM,

Looked in the filemon regmon logs to no avail, but did some hunting and
pecking:

Turned out to be a component needed: WMI Win32 Provider (which makes sense
considering what these tools are trying to accomplish).

"Server Command Line Tools" does not call WMI Win32 Provider as a dependency
(directly/specifically), nor does it specify such in the Component Help.

On another note: (could be useful to others):

The WMI Win32 Provider component is also needed to suppress that annoying
netsh message specifying: "Cannot retreve host information for COMPUTERNAME,
some commands will not be available".

Anyhow....it is resolved...which is a good thing! Thanks for your prompt
replies, and suggestions. If I can be of any help, please let me know.


Кто-нибудь знает, что такое "Server Command Line Tools" и компонент "WMI Win32 Provider" и как его установить?
Автор: 01MDM
Дата сообщения: 13.11.2007 13:39
CriticalError
Поставь pstools
Там есть pslist и pskill. Ничем не хуже tasklist и taskkill.
Автор: king_stiven
Дата сообщения: 13.11.2007 14:38
Lutvun
Пробуй
for /f "usebackq tokens=*" %%a in (`dir "%~1\*~*" /b /s /a:-d`) do (
Автор: Cyril Konst
Дата сообщения: 13.11.2007 15:22

Цитата:
Будем считать, что путь к аккаунтам пользователей стандартный: "c:\documents and settings", если нет, то измени путь на нужный тебе. Архивы создаются в директории откуда был запущен батник. Используется консольная версия архиватора 7zip, скопируй её в папку Windows.

Код:
@echo off
for /f "delims=" %%a in (
'dir "c:\documents and settings" /b /s /a:d ^| find /v /i "\Default" ^| findstr "документы$"') do (
for /f "delims=\ tokens=3" %%b in ("%%a") do 7z.exe a -t7z "%%~nxb".7z "%%a"
)


Здесь создаются файлы с именем юзера каждый.
А как переделать, чтобы создавался один файл (doc.7z), в котором бы были подкаталоги с именами юзеров?
Автор: Lutvun
Дата сообщения: 13.11.2007 15:51
king_stiven
Ничиво не изменилось, также как и создавались двойние нонеймы так и создаютса. И файлы без тыльды дальше обрабатываютса.
Автор: 01MDM
Дата сообщения: 13.11.2007 19:46
Cyril Konst

Цитата:

А как переделать, чтобы создавался один файл (doc.7z), в котором бы были подкаталоги с именами юзеров?

Если только все сначала скопировать в одно место. Вот вариант без "привязки к местности" расположения профилей пользователей. На home работать не будет, если не установлена wmic.

Код:
@echo off
setlocal
md arch
chcp 1251 >nul
for /f "tokens=2 delims==" %%i in ('wmic useraccount get sid /value') do (
for /f "skip=2 tokens=3*" %%i in ('reg query "hku\%%i\software\microsoft\windows\currentversion\explorer\shell folders" /v personal 2^>nul') do (
set "userpath=%%i %%j" && call:arch
)
)
7z a -t7z userdocs.7z arch\
chcp 866 >nul
goto:eof
:arch
xcopy /s "%userpath%" "arch\%userpath:~3%"
Автор: Cyril Konst
Дата сообщения: 13.11.2007 20:30
01MDM
Чёто не работает как надо...
всё в подкаталог одного юзера копирует...
Автор: 01MDM
Дата сообщения: 13.11.2007 22:21
Cyril Konst
Пожалуй он будет работать только если все пользователи будут "залогинены"
Попытка #2

Код:
@echo off
for /f "tokens=2 delims==" %%i in ('wmic useraccount get name /value') do (call:next %%i)

7z a -t7z docs.7z arch\
goto:eof

:next
if %1 equ Администратор goto:eof
if %1 equ Гость goto:eof
if %1 equ SUPPORT_388945a0 goto:eof
if %1 equ HelpAssistant goto:eof
if %1 equ ASPNET goto:eof
xcopy /s /i "%HOMEDRIVE%\Documents and Settings\%1\Мои Документы" "arch\%1"
Автор: Tipulatoid
Дата сообщения: 13.11.2007 23:14
soulthiefer

Цитата:
помогите пожалуйста с батником который будет менять это время на 5 минут больше системного на данный момент и выключать комп ! а он должен по идее через 5 мин включиться !

Ну пробуй. Батник не тестировался, т.к. мою материнку найденная тобой утилита не поддерживает. Перед запуском батника настрой должным образом утилиту Bilarm, убедись что она работает на твоем компе. батник следует запускать из папки где лежат файлы этой утилиты.

Код: @echo off

:: Прибавляем к текущему времени 5 минут, используется код wolf0425
set delay=5
set /a time#n=(0%time:~0,1%)*600 + (%time:~1,1%)*60 + (%time:~3,1%)*10 + (%time:~4,1%) + %delay%
if %Time#n% GEQ 1440 set /a Time#n=%Time#n%-1440
Set /a Time#h=(%Time#n%)/60
Set /a Time#m=%Time#n%-(%Time#h%*60)

:: Выясняем номер дня
set day=%date:~0,2%

:: Запускаем утилиту Bilarm
Bilarm.exe /set %day%:%time#h%:%time#m%:0

:: Выключаем комп через 10 секунд
shutdown -s -t 10
Автор: Lutvun
Дата сообщения: 14.11.2007 07:43
Tipulatoid
Огромное спасибо. Всё работает как надо.
П.С. Также огромное спасибо king_stiven!!!
Автор: William Gates
Дата сообщения: 14.11.2007 08:05
Нужен батник которвый откроет из определенного каталога файл temp.rtf, и в случае если пользователь внесет в него какие-либо изменения сохранит его в другом каталоге. Если отследить изменения сложно, можно просто при закрытии окна документа сохранять его в другом каталоге. Заранее благодарю.
Автор: 123Maximus123
Дата сообщения: 14.11.2007 08:27
День добрый Уважаемые
В наличии есть вот такой бантик

Код:
@echo off
SET FOLDER=%date:~0,2%.%date:~3,2%.%date:~6,4%-%time:~0,2%.%time:~3,2%.%time:~6,2%
cd С:\BACKUP
md %FOLDER%
C:
cd C:\baza\Demo\
"C:\Program Files\WinRAR\rar.exe" a -m5 -o+ -r C:\backup\%FOLDER%\backup.rar *.*
exit
Автор: Cyril Konst
Дата сообщения: 14.11.2007 09:08
01MDM

Цитата:
Пожалуй он будет работать только если все пользователи будут "залогинены"

Да нет, список пользователей правильно выводится.
Похоже это 7z тупит. Он типа не различает вышестоящие каталоги.

Цитата:
Попытка #2

Когда делается xcopy, ошибка: "не найден файл Мои Документы"
Автор: soulthiefer
Дата сообщения: 14.11.2007 09:17
Tipulatoid
скопировал предложенный вами батник
выдает такую ошибку http://soulthiefer.narod.ru/123.JPG



Lutvun
то что вы предложили вообще ничего не делает (( я просто скопировал в батник он выполняется но ниче не происходит .. мож я чтото не так делаю ?(((

Автор: 01MDM
Дата сообщения: 14.11.2007 09:26
Cyril Konst

Цитата:

Когда делается xcopy, ошибка: "не найден файл Мои Документы"

Такая ошибка возникает только если к папке "Мои документы" пользователя закрыт общий доступ.
Я попробовал у себя и все отработало правильно.

Просто через проводник туда зайти можно? Или пишет "Отказано в доступе"
Автор: Nagual
Дата сообщения: 14.11.2007 09:50
01MDM
да нет же, просто xcopy хочет уточнить, файл это или папка, о чем и говорит нам ошибка
поэтому надо делать так
echo f|xcopy в случае, если объект — файл
echo d|xcopy в случае, если объект — папка

Добавлено:
-t7z вовсе не обязательно ставить, ибо по дефолту так и так создаются архивы 7z
Автор: 01MDM
Дата сообщения: 14.11.2007 10:03
Nagual
Тогда почему ОН одни учетные записи, к которым открыт общий доступ обрабатывает правильно, а в других случаях пишет что не найден файл "Мои документы"?
К тому же xcopy с ключем /s - копировать все папки и подпапки вместе с содержимом кроме пустых.
Автор: Nagual
Дата сообщения: 14.11.2007 10:24
01MDM
извиняюсь, нет ща времени вникать в суть задачи
навскидку такие ошибки бросаются в глаза
нет файла "Мои документы", это папка
и возможно ее действительно может не быть, поэтому надо сделать проверку на ее наличие и в случае ее отсутствия, не выполнять копирование
ну и

Цитата:
if %1 equ Администратор goto:eof
if %1 equ Гость goto:eof
if %1 equ SUPPORT_388945a0 goto:eof
if %1 equ HelpAssistant goto:eof
if %1 equ ASPNET goto:eof

в справке вижу такое, то есть имхо ошибка в параметре сравнения есть

EQL - равно
NEQ - не равно
LSS - меньше
LEQ - меньше или равно
GTR - больше
GEQ - больше или равно

было бы неплохо увидеть точную постановку задачи

Добавлено:
да, и вместо %HOMEDRIVE%\Documents and Settings\ имхо лучше использовать %USERPROFILE%\..\ так как в некоторых случаях папка профилей и настроек может быть переопределена
Автор: Cyril Konst
Дата сообщения: 14.11.2007 10:36
Nagual

Цитата:
было бы неплохо увидеть точную постановку задачи

Нужно создать архив documents.7z, в котором бы сохранялась структура каталогов пользователей (\user1\Мои документы, \user2\Мои документы...\userN\Мои документы).
01MDM

Цитата:
Просто через проводник туда зайти можно? Или пишет "Отказано в доступе"

Можно.
Для всех каталогов пишет "не найден файл Мои Документы"
Автор: Tipulatoid
Дата сообщения: 14.11.2007 12:09
soulthiefer

Цитата:
скопировал предложенный вами батник
выдает такую ошибку http://soulthiefer.narod.ru/123.JPG

Поскольку у меня утилита Bilarm.exe не работает, то поиграй с нею сам:
1. запусти консоль (Пуск -> выполнить ... -> пишешь cmd -> ОК)
2. перейди в папку где лежит Bilarm.exe (пишешь cd "полный путь к папке где лежит Bilarm "
3. Запускай ее с разными параметрами, т.е. пишешь Bilarm.exe /set 14:21:52:32 , например (где 14 -номер дня, 21-час включения, 52- минута включения, 32- секунда включения). Если ошибка не вылазит, значит ты правильно ее запустил. ТОгда выключай комп и жди. Если комп включился в указаное время, все ОК.
Если ошибка вылазит, меняешь синтаксис параметров так и сяк, пока не заработает. Удачную команду пишешь здесь в точности.

PS Кстати, ты когда копировал с форума, концевые пробелы удалил?
Автор: 01MDM
Дата сообщения: 14.11.2007 12:38
Nagual

Цитата:
в справке вижу такое, то есть имхо ошибка в параметре сравнения есть

EQL - равно


открываю ntcmds.chm и там вижу EQU

Код:
C:\>set a=123

C:\>set b=123

C:\>if %a% equ %b% echo равно
равно

C:\>if %a% eql %b% echo равно
Непредвиденное появление: eql.

C:\>
Автор: soulthiefer
Дата сообщения: 14.11.2007 12:44
Tipulatoid
спасибо большое щас буду пробовать !
концевые пробелы удалил - это что простите ?
Автор: acue
Дата сообщения: 14.11.2007 13:18
Возможно ли сделать ввод переменной с клавиатуры:

set /p myvar=

так, чтобы во время ввода символов пользователем они не отображались на экране?
(например, для ввода пароля и последующей его передачи в качестве параметра запускаемой проге)
Автор: Cyril Konst
Дата сообщения: 14.11.2007 13:21
01MDM

Цитата:
Может ты его сохранил в кодировке 1251, надо в 866. Пересохрани в cp866

Кстати, да Хотя я пробовал добавлять команду chcp 1251.
Тут ещё один подводный камень обнаружился... Дело в том, что логины юзеров и названия их каталогов-профилей не всегда совпадают... И в этом случае ничего не копируется ("Мои документы" не найдены).
Автор: soulthiefer
Дата сообщения: 14.11.2007 13:28
Tipulatoid
пытаюсь запустить через коммандную .. bilarm.exe /set 0:12:12:12 пишет что не выбрана материнская плата !!! а как же ее выбрать то ?!?!?(

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869

Предыдущая тема: Доступ к реестру через RegEdit?


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