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

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

Автор: Misha1989
Дата сообщения: 20.02.2011 15:21
wolf0425
Цитата:
а приведешь пример программы с разноцветным заголовком?

Думаю такое возможно, если не использовать стандартные окна Windows, а вот надпись на кнопке в панели задач я думаю невозможно сделать другим цветом.

Примеры программ, где не используются стандартные окна Windows:
UIMain.exe - «Билайн Интернет Дома»
Заголовок сделан в виде цветных картинок, можно хоть текст любым цветом, хоть изображения.
Автор: vu1tur
Дата сообщения: 20.02.2011 15:25
res2001

Цитата:
Для батников нельзя, а вообще можно.

Пример?
На сколько я помню, кнопки панели задач (не тулбары) не могут быть owner drawn.
Автор: porky777
Дата сообщения: 20.02.2011 17:46
Уважаемые ALL! Доброго Вам времени суток.

Помогите мне решить задачу такого вида:

Необходимо проверить количество файлов в каталогах:

SDK\SORT\38\3nn\mmyy\ - используя следующую маску файлов R*Dddmmyy*

где:

nn - фиксированый список изменяющихся значений. Вот массив значений (02,04,06,08,10,18,20,25,30,38,39,44,54,66)

т.е. в папке 38 будет 14 папок
SDK\SORT\38\302\mmyy\
\304\mmyy\
.......
\366\mmyy\

mm - месяц
yy - две последних цифры года

SDK\SORT\38\302\0111\
SDK\SORT\38\302\0211\
SDK\SORT\38\302\0311\
...........
SDK\SORT\38\302\1211\

dd - день в формате (01,02,03,....31)

Значения dd,mm,yy задаются с клавиатуры для дальнейшего использования в маске и для подстановки в имя папки.

Следует узнать:

Количество файлов в каждой папке mmyy по указанной дате.

Количество файлов в каждой папке mmyy за предыдущую дату.

Вывести значения количества файлов в папках в таком виде:

Сегодня Вчера
02 -
04 -
06 -
08 -
10 -
18 -
20 -
25 -
30 -
38 -
39 -
44 -
54 -
66 -


Заранее спасибо вам ребят. Если что не ясно, я постараюсь объяснить
Автор: wolf0425
Дата сообщения: 20.02.2011 19:16

Цитата:
Помогите мне решить задачу такого вида:

это реальная задача или препод задал?

1. загоняешь в переменные day1 mon1 year1 сегодняшнюю дату в формате dd mm yy
2. читаешь шапку темы и находишь способ загнать в day2 mon2 year2 вчерашнюю дату

после чего делаешь

Код: for %%a in (02,04,06,08,10,18,20,25,30,38,39,44,54,66) do (
for /f %%c in (' dir /a-d /b SDK\SORT\38\3%%a\%mon1%%year1%\R*D%day1%%mon1%%year1%* ^| find /c /v "" ') do 0>nul set /p="%%a - %%c"
for /f %%c in (' dir /a-d /b SDK\SORT\38\3%%a\%mon2%%year2%\R*D%day2%%mon2%%year2%* ^| find /c /v "" ') do echo. %%c
)
Автор: porky777
Дата сообщения: 21.02.2011 06:50
Задача реальная. Спасибо. Сейчас попробую.
Автор: res2001
Дата сообщения: 21.02.2011 09:21
wolf0425

Цитата:
а приведешь пример программы с разноцветным заголовком?

Собственно, имел в виду заголовок программы, а не кнопку на панели задач.
Первая часть вопроса была про "титле батника"
Автор: wolf0425
Дата сообщения: 21.02.2011 09:24

Цитата:
Собственно, имел в виду заголовок программы, а не кнопку на панели задач.

так и я имел в виду заголовок окна - который btw тоже системой рисуется в соотвествии с настройками виндовой темы, а не кнопку на панели задач.
программы со скрытым заголовком и разноцветной надписью картинками сверху окна - как пример разноцветного заголовка не канают.
Автор: res2001
Дата сообщения: 21.02.2011 09:32
wolf0425
Давно не писал уже полноценных приложений, но если память не изменяет, отрисовка своего заголовка делается так же как и отрисовка основного окна - перехватывается соответствующее сообщение окна и рисуешь все что тебе надо в заголовке, не передавая управление обработчику по умолчанию. Для отрисовки заголовка и окна используются разные сообщения.
Автор: BagaBaga
Дата сообщения: 21.02.2011 19:46
Пытаюсь переименовать кучу файлов и туплю.

Есть файлы maguttec????????????
[?] - один символ

Пытаюсь их переименовать во что-то вроде tec????????????

Так вот, команда ren maguttec???????????? tec????????????
превращает их в tecuttec????????????


Каким образом можно массово обрезать "префикс" magut
?
Автор: Misha1989
Дата сообщения: 21.02.2011 20:00
BagaBaga
Цитата:
Каким образом можно массово обрезать "префикс" magut

set "A1=maguttec123"
set "A2=%A1:magut=%"
ren "%A1%" "%A2%"

Принцип такой и всё это дело в цикл запихать. А с циклами я не дружу.
Автор: inock
Дата сообщения: 22.02.2011 08:22
Подскажите плз, есть ли под win аналог команды head.
То есть, например нужно поймать первую строку вывода команды

dir /b /o-D filename.*

Или каким-то другим способом получить имя самого свежего файла, соответствующего заданной маске.
Автор: king_stiven
Дата сообщения: 22.02.2011 08:23
inock
dir /?
Автор: inock
Дата сообщения: 22.02.2011 08:29

Цитата:
dir /?


Перечитал еще раз. Просветление не настало.
Автор: king_stiven
Дата сообщения: 22.02.2011 09:12
inock
FOR /F "tokens=*" %%i IN ('dir /o:-d /b') DO (
echo %%i
goto :eof
)
подредактируешь
Автор: inock
Дата сообщения: 22.02.2011 09:26

Цитата:
подредактируешь


А вот это - да. Уйти после первого прохода в eof - это я не догадался.
Спасибо )
Автор: 42243
Дата сообщения: 22.02.2011 17:23
Нужно что бы программа в локальной сети запускалась в единственном энкземпляре.
Нашел способ с помощью утилиты PsList, но несколько дней экспериментов с политиками и правами доступа не дали рензультата, зато есть доступ в общую папку. Из чего родилась идея:
Батник должен запускать данную программу, при запуске создавая в своей общей папке например 111.txt
После выхода из программы 111.txt должен удаляться (Не знаю воозможно ли это).
А перед запуском проверять, нет ли такокого файлика в чужой общей папке по адресу \\User\111.txt Соответственно если файл есть, то программа не должна запускаться.
Буду признателен за помощь. В батниках я чайник...
Автор: OOD
Дата сообщения: 22.02.2011 17:28
Подскажите как с помощью Batника изменить разрешение экрана?

Добавлено:
для windows 7
пробовал

Код:
: batch file
multires.exe /800,600,32
start /w iexplore.exe
multires.exe /restore
Автор: Free_Soft
Дата сообщения: 22.02.2011 17:31
42243
ну типа как-то так:

Код: @echo off
if exist \\User\111.txt exit
echo.>111.txt
start /wait "" "program.exe"
del /q 111.txt
Автор: king_stiven
Дата сообщения: 22.02.2011 17:35

Цитата:
Подскажите как с помощью Batника изменить разрешение экрана?

nircmd в шапке, насчёт для windows 7 не уверен
Автор: OOD
Дата сообщения: 22.02.2011 18:00
king_stiven
тоже самое
nircmd.exe cmdshortcut "~$folder.desktop$" "800x600x24" setdisplay 800 600 24
не проходит

может кто то сталкивался с 7й? , очень надо
Автор: wolf0425
Дата сообщения: 22.02.2011 18:07
42243
Цитата:
Нужно что бы программа в локальной сети запускалась в единственном энкземпляре.
наверно как-то так:

Код: @echo off
set "_program=program.exe"
set "_fileflag=\\server\shareRW\program.flag"
set "_tmp=%COMPUTERNAME%%random%.flag"

1>nul 2>nul dir "%_fileflag" || (echo Error: Flag File not found! & exit)

move /y "%_fileflag" "%_tmp%"
if errorlevel 1 echo Error: Flag File is locked! & exit

set /p _comp=<"%_tmp%"
1>nul ping %_comp% || goto :startnew
tasklist /s %_comp% | findstr /i /b %program% 1>nul || goto :startnew
move /y "%_tmp%" "%_fileflag"
echo %program% is now working at %_comp%
exit

:startnew
1>"%_fileflag" echo %COMPUTERNAME%
del "%_tmp%"
start "" "w:\dir345\%program%"
rem w:\dir345\ - путь к программе
exit
Автор: OOD
Дата сообщения: 22.02.2011 18:22
Подскажите смена разрешение заработала:

multires.exe /1:1680,1050,32,60
exit

но нужно сделать чтобы перед запуском multires.exe была пауза какая то...
Автор: king_stiven
Дата сообщения: 22.02.2011 18:50
OOD
шапку читай
Автор: 42243
Дата сообщения: 22.02.2011 22:54
wolf0425
Спасибо за работу. Но программа не запускается и program.flag не создается

Код: @echo off
set "_program=FSViewer.exe"
set "_fileflag=\\vlad\SharedDocs\program.flag"
set "_tmp=%COMPUTERNAME%%random%.flag"

1>nul 2>nul dir "%_fileflag" || (echo Error: Flag File not found! & exit)

move /y "%_fileflag" "%_tmp%"
if errorlevel 1 echo Error: Flag File is locked! & exit

set /p _comp=<"%_tmp%"
1>nul ping %_comp% || goto :startnew
tasklist /s %_comp% | findstr /i /b %program% 1>nul || goto :startnew
move /y "%_tmp%" "%_fileflag"
echo %program% is now working at %_comp%
exit

:startnew
1>"%_fileflag" echo %COMPUTERNAME%
del "%_tmp%"
start "" "C:\Program Files\FastStone Image Viewer\%program%"
exit
Автор: wolf0425
Дата сообщения: 23.02.2011 00:00

Цитата:
Но программа не запускается и program.flag не создается
ну да, не создается - его один раз надо создать вручную, забыл написать.


Цитата:
Сервера нет. Это домашняя сеть на 2 компьютера.
тогда проще написать 2 раздельных батника для двух компов.
проверку от повторного запуска на одном компе- писать надо, или FSViewer.exe сам повторно не запустится (на одном компе)?

Автор: 42243
Дата сообщения: 23.02.2011 16:51

Цитата:
проверку от повторного запуска на одном компе- писать надо, или FSViewer.exe сам повторно не запустится (на одном компе)?

Программа будет запускаться на обоих компьютерах, главное чтобы не одновременно (1 энкземпляр на 2 компа в сети)
Я думал что батник будет одинаков для обоих кроме путей к общим папкам.
На своем компе проверка на повторный запуск в общем не обязательна, и так видно. Главное проверить не запущена ли программа на удаленном компьютере, и если запущена, то чтобы запуск ее на своем был не возможен.

Добавлено:
Проблема решена, подсказали на другом форуме. Может кому пригодится, цитирую:
$Userlist - список пользователей, по 1 на строку. Например, так:

Код: \\192.168.1.217
\\MORFEY
\\BIBLIOTEKA
\\MICROSOF-D58208
Автор: butanaev
Дата сообщения: 24.02.2011 08:44
Пытаюсь автоматизировать подпись файлов для сбербанка программой sbersign.
Программа запускается из командной строки с параметрами, после чего просит ввести пароль. есть ли возможность реализовать ввод этого пароля в батнике?
Автор: res2001
Дата сообщения: 24.02.2011 09:02
butanaev
Боюсь, что это не возможно. Сам бился с этим.
С точки зрения безопасности это и не нужно .
Если ты это реализуешь, то
1.Любой может отправить инфу в сбербанк с этого раб.места
2.Любой сможет узнать пароль.
Автор: butanaev
Дата сообщения: 24.02.2011 09:09
res2001
с точки зрения безопасности - батник будет храниться на флешке с ключами и паролями, поэтому он не привязан к конкретному раб. месту. Может все же есть какое то решение задачи?
Автор: king_stiven
Дата сообщения: 24.02.2011 09:37

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

Задать этому батнику определённый заголовок, скрыто запустить второй батник, с помощью nircmd ввести цифры в окно батника.,

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071

Предыдущая тема: зависает установка Windows XP: 39 минут


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