Модераторы: bartram, Akella

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Выбор случайного файла в папке, *.bat 
V
    Опции темы
ProgramerForever
  Дата 19.6.2009, 21:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 554
Регистрация: 15.11.2006
Где: Новосибирск

Репутация: 2
Всего: 5



Доброго времени суток, уважаемые форумчане. Есть задача: с помощью bat-файла записать в файл autorun.inf строку следующего содержания:
Код

icon=<путь_к_папке_иконок><случайный_ico_файл_из_этой_директории>

Это в идеале. Хотя, если это организовать оч сложно, то можно и так:
Код

icon=<путь_к_папке_иконок><случайный_номер_исходя_из_количества_иконок_в_папке>.ico

Или даже так:
Код

icon=<путь_к_папке_иконок><случайный_номер_в_диапазоне_1_N>.ico

Заранее спасибо =)

Это сообщение отредактировал(а) ProgramerForever - 19.6.2009, 21:36
PM MAIL WWW ICQ   Вверх
mihanik
Дата 19.6.2009, 23:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


-=Белый Медведь=-
****


Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

Репутация: 61
Всего: 109



Цель?

VBS не подойдёт? (на бейсике это сделать проще...) smile



--------------------
Программистами не рождаются, - это родовая травма...
user posted imageuser posted image
PM MAIL WWW ICQ   Вверх
ProgramerForever
  Дата 19.6.2009, 23:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 554
Регистрация: 15.11.2006
Где: Новосибирск

Репутация: 2
Всего: 5



Цель - маленький файлик для вычищения собственной флешки от гадости. Ну, и попутно, для понтов, сделать рандомную иконку =)
Цитата

VBS не подойдёт?

IMHO, Винда любая VBS запустит. Тогда подойдёт. Юзер только должен видеть сообщения о том, что удалено, что пофиксено. Вот исходный bat, написаный мной:
Код

@echo off
echo **********************************
echo Утилита чистки Флеш - накопителей.
echo Автор программы - Б о е в   Г р и г о р и й (ProgrammerForever)
echo Сайт - InfraRed.ucoz.ru
echo **********************************
echo Начало работы...
echo ..................................
echo Удаление из папки RECYCLER\
rmdir recycler\ /S /Q
echo ..................................
echo Удаление из папки RECYCLED\
rmdir recycled\ /S /Q
echo ..................................
echo Восстановление нормального autorun.inf
attrib -s -h -r -a autorun.inf
del autorun.inf /f /q
echo [Autorun] >>autorun.inf
echo icon=bg32.ico >>autorun.inf
echo label=ProgrammerForever >>autorun.inf
attrib +s +h +r +a autorun.inf
echo ..................................
echo Конец..
echo **********************************
echo Спасибо за использование программы !!
pause

PM MAIL WWW ICQ   Вверх
jhonyxakep
  Дата 20.6.2009, 08:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Divide Et Impera
**


Профиль
Группа: Участник
Сообщений: 983
Регистрация: 7.4.2009
Где: Что, Когда?

Репутация: 3
Всего: 8



Цитата(ProgramerForever @  19.6.2009,  23:10 Найти цитируемый пост)
Цель - маленький файлик для вычищения собственной флешки от гадости. Ну, и попутно, для понтов, сделать рандомную иконку =)

 Есть проблема: В твоем примере прога возится с червём KIDO. Он генерит не случайные названия, если надо то могу дать конкретно какие. Аообще с антиавторанами сейчас можно выйти на мировой уровень smile

только никто этим заниматся не хочет.

Цитата(ProgramerForever @  19.6.2009,  23:10 Найти цитируемый пост)
IMHO, Винда любая VBS запустит. Тогда подойдёт. Юзер только должен видеть сообщения о том, что удалено, что пофиксено. Вот исходный bat, написаный мной:


неа, я вообще отключаю функцию запуска ВБС


но идея и реализация самого антиавторана мне понравилась smile

я на батниках его писал но не так, это мощнее smile


Цитата

echo Удаление из папки RECYCLER\
rmdir recycler\ /S /Q
echo ..................................
echo Удаление из папки RECYCLED\
rmdir recycled\ /S /Q
echo ..................................

если быть точным то ты удаляешь не из папки а саму папку

если чё, обращяйся в личку могу и помочь и сам спрость smile
PM MAIL ICQ   Вверх
ProgramerForever
  Дата 20.6.2009, 12:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 554
Регистрация: 15.11.2006
Где: Новосибирск

Репутация: 2
Всего: 5



Цитата

если быть точным то ты удаляешь не из папки а саму папку

Ну да. А "нафига козе баян"? Ведь на флешках нет корзины. Да и "recycler" не нужна.
Цитата

неа, я вообще отключаю функцию запуска ВБС

Тогда надо на bat делать.
Случайное число (в промежутке 1.. 32767) есть переменной %RANDOM%
Надо:
1.) Инициализация генератора случайных чисел
2.) Узнать, сколько ico файлов в папке
3.) Сгенерить число в этом диапазоне
4.) Скидать всё в переменную
5.) Залить в файл autorun.inf
PM MAIL WWW ICQ   Вверх
jhonyxakep
Дата 20.6.2009, 12:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Divide Et Impera
**


Профиль
Группа: Участник
Сообщений: 983
Регистрация: 7.4.2009
Где: Что, Когда?

Репутация: 3
Всего: 8



Цитата(ProgramerForever @  20.6.2009,  12:08 Найти цитируемый пост)
Случайное число (в промежутке 1.. 32767) есть переменной %RANDOM%
Надо:

Зачем?
это все зараза не делает

PM MAIL ICQ   Вверх
ProgramerForever
Дата 20.6.2009, 12:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 554
Регистрация: 15.11.2006
Где: Новосибирск

Репутация: 2
Всего: 5



Я не знаю синтаксиса просто. Ну, вот, например, на VB то же самое:
Код

'1.) Инициализация генератора случайных чисел
randomize
'2.) Узнать, сколько ico файлов в папке'
i=file1.ListCount
'3.) Сгенерить число в этом диапазоне
r=cint(rnd()*c)
'4.) Скидать всё в переменную
FileName=file1.List(r)
'5.) Залить в файл autorun.inf
'Это я могу уже делать в bat'никах

PM MAIL WWW ICQ   Вверх
jhonyxakep
Дата 20.6.2009, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Divide Et Impera
**


Профиль
Группа: Участник
Сообщений: 983
Регистрация: 7.4.2009
Где: Что, Когда?

Репутация: 3
Всего: 8



нет, мне интереско зачем случайное число? оно-же всегда разное.
PM MAIL ICQ   Вверх
01MDM
Дата 20.6.2009, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 273
Регистрация: 10.5.2008
Где: Default City

Репутация: 29
Всего: 29



ProgramerForever, 

Цитата

icon=<путь_к_папке_иконок><случайный_номер_в_диапазоне_1_N>.ico


Если "N" общее число иконок в папке

Код

@echo off
setlocal enabledelayedexpansion

pushd "Z:\Path\To\Folder\With\Icons"
set "iconpath=%cd%"

for %%i in (*.ico) do set /a cnt+=1
for /l %%i in (1,1,%cnt%) do set "num_!random!=%%i"
for /f "tokens=3 delims=_=" %%i in ('set num_') do set "num=%%i"

popd

1>>autorun.inf echo icon=%iconpath%\%num%.ico




--------------------
Вопросы в личке останутся без ответов.
PM MAIL   Вверх
ProgramerForever
Дата 20.6.2009, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 554
Регистрация: 15.11.2006
Где: Новосибирск

Репутация: 2
Всего: 5



У меня в папке отдельной, например в "Icons", будут лежать иконки. Разные. А в автозагрузке autorun.inf надо будет прописать запуск этого батника. Тогда при каждом подключении флеша я буду получать новую иконку из папки. Функционально - многие вирусы идут лесом, и необычно - иконка меняется автоматом.
PM MAIL WWW ICQ   Вверх
ProgramerForever
Дата 20.6.2009, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 554
Регистрация: 15.11.2006
Где: Новосибирск

Репутация: 2
Всего: 5



Код работает. Только не до конца.
В файл пишется "icon=H:\Icons\11.ico" 
Надо убрать "H:\" , иначе не работает..
PM MAIL WWW ICQ   Вверх
01MDM
Дата 20.6.2009, 18:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 273
Регистрация: 10.5.2008
Где: Default City

Репутация: 29
Всего: 29



ProgramerForever, 

Т.е относительный путь, без указания диска?

Код

@echo off
setlocal enabledelayedexpansion

pushd "Icons"
call:setpath "%cd%"

for %%i in (*.ico) do set /a cnt+=1
for /l %%i in (1,1,%cnt%) do set "num_!random!=%%i"
for /f "tokens=3 delims=_=" %%i in ('set num_') do set "num=%%i"

popd


:: два варианта на выбор:
1>>autorun.inf echo icon=.%iconpath%\%num%.ico
1>>autorun.inf echo icon=%iconpath:~1%\%num%.ico
goto:eof

:setpath
set "iconpath=%~pn1"



--------------------
Вопросы в личке останутся без ответов.
PM MAIL   Вверх
ProgramerForever
  Дата 21.6.2009, 09:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 554
Регистрация: 15.11.2006
Где: Новосибирск

Репутация: 2
Всего: 5



Спасибо, работает. Вот вам программкуа в нагрузку, если кто захочет себе такую фишку поставить.
Код

::@echo off
echo **********************************
echo “вЁ«Ёв  зЁбвЄЁ ”«Ґи - ­ Є®ЇЁвҐ«Ґ©.
echo Ђўв®а Їа®Ја ¬¬л - Ѓ ® Ґ ў   ѓ а Ё Ј ® а Ё © (ProgrammerForever)
echo ‘ ©в - InfraRed.ucoz.ru
echo **********************************
echo Ќ з «® а Ў®вл...
echo ..................................
echo “¤ «Ґ­ЁҐ Ё§ Ї ЇЄЁ RECYCLER\
rmdir recycler\ /S /Q
echo ..................................
echo “¤ «Ґ­ЁҐ Ё§ Ї ЇЄЁ RECYCLED\
rmdir recycled\ /S /Q
echo ..................................
echo ‚®ббв ­®ў«Ґ­ЁҐ ­®а¬ «м­®Ј® autorun.inf
attrib -s -h -r -a autorun.inf
del autorun.inf /f /q
echo [Autorun] >>autorun.inf
echo open=BG_AntiVirus.bat>>autorun.inf
echo label=ProgrammerForever >>autorun.inf
attrib +s +h -r +a autorun.inf

setlocal enabledelayedexpansion
pushd "Icons"

call:setpath "%cd%"
for %%i in (*.ico) do set /a cnt+=1
for /l %%i in (1,1,%cnt%) do set "num_!random!=%%i"
for /f "tokens=3 delims=_=" %%i in ('set num_') do set "num=%%i"

popd


:: два варианта на выбор:
::1>>autorun.inf echo icon=.%iconpath%\%num%.ico
1>>autorun.inf echo icon=%iconpath:~1%\%num%.ico
goto:eof

:setpath
set "iconpath=%~pn1"

echo ..................................
echo Љ®­Ґж..
echo **********************************
echo ‘Ї бЁЎ® §  ЁбЇ®«м§®ў ­ЁҐ Їа®Ја ¬¬л !!
pause


PS:Насколько я понимаю, код немного неверно работает. EOF - конец файла ведь?

Это сообщение отредактировал(а) ProgramerForever - 21.6.2009, 09:59

Присоединённый файл ( Кол-во скачиваний: 4 )
Присоединённый файл  BG_BAT_AntiVirus.rar 160,10 Kb
PM MAIL WWW ICQ   Вверх
01MDM
Дата 21.6.2009, 10:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 273
Регистрация: 10.5.2008
Где: Default City

Репутация: 29
Всего: 29



ProgramerForever, 
Сталкивался с проблемой, когда дочь из школы приносила подарки на флешке.
Написал батник и обязал его выполнять перед тем как отмонтировать флеху от школьной машины.
Здесь главным условием служило, что в корне флешки лежат строго определенные файлы, а весь контент только в папках. Для того чтоб из папки не запускалась зараза через autorun.inf, я его "пометил". Собственно батник проверяет autorun.inf и содержимое корня. На всякий случай файлы не удаляются, а перемещаются в папку Quarantine. После этого домашний антивирус больше не ругался.
Хм, только сейчас подумал, что это не решает поблему, если в авторан просто допишут значение...

Код

::
:: clean.cmd
::

@echo off
setlocal

pushd %~dp0
md QUARANTINE 2>nul

findstr c:";; 123-asd-098" autorun.inf 1>nul || (
    move autorun.inf QUARANTINE\autorun.inf.!!
)

for /f "tokens=*" %%i in ('dir /b /a-d') do (
    echo %%i | findstr "clean.cmd autorun.inf 124.sdv usb.ico" 1>nul || (
        attrib -s -h -r "%%i"
        move "%%i" "QUARANTINE\%%~nxi.!!"
    )
)  

set cnt=0
for %%i in (QUARANTINE\*) do set /a cnt+=1
echo found %cnt% files

popd
pause 1>nul


PS. Поставь последний блок echo перед goto:eof, т.е перед выходом из батника. 
   

Это сообщение отредактировал(а) 01MDM - 21.6.2009, 10:23


--------------------
Вопросы в личке останутся без ответов.
PM MAIL   Вверх
jhonyxakep
Дата 21.6.2009, 10:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Divide Et Impera
**


Профиль
Группа: Участник
Сообщений: 983
Регистрация: 7.4.2009
Где: Что, Когда?

Репутация: 3
Всего: 8



ProgramerForever, могу заметить что антивирус (этот) работает только с некоторыми вирусами. Я обычно в них ещё дописывал открытие скрытых файлов и папок. Есть зараза которая и такое делает. ;)
PM MAIL ICQ   Вверх
ProgramerForever
Дата 19.11.2010, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 554
Регистрация: 15.11.2006
Где: Новосибирск

Репутация: 2
Всего: 5



Так делает, если я не ошибаюсь, китайский вирус FlyStudio.bf. Или червь Sality.aa. Как-то с ними боролся в школе, все каникулы убил на настройку компов в классе.
PM MAIL WWW ICQ   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Windows"
December
bartram
Akella

Запрещается!

1. Обсуждать взлом и делиться кряками

2. Способствовать созданию и распространению вирусов

  • Для бессмертных бородатых вопросов типа Win vs Nix есть специальный форум Религиозные Войны
  • Несанкционированная реклама на форуме запрещена
  • Пожалуйста, давайте своим темам осмысленный, информативный заголовок. Вопль "Помогите!" таковым не является.
  • Чем полнее и яснее Вы изложите проблему, тем быстрее мы её решим.
  • ВСЕГДА УКАЗЫВАЙТЕ ВЕРСИЮ ОС

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, December, bartram, Akella.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS Windows | Следующая тема »


 




[ Время генерации скрипта: 0.0644 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.