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

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

Автор: HaK1R
Дата сообщения: 07.06.2009 22:41
strat
да, прикольно
Автор: alexander6161
Дата сообщения: 08.06.2009 02:04
01MDM
Подменяются ключики. Сегодня экспериментировал. В Vista x32 то же самое. Тут как бы два уровня администратора, и когда прога работает не с полным доступом, но от администратора, то ключ вместо
HKEY_LOCAL_MACHINE\SOFTWARE\
подменяется на
HKEY_CURRENT_USER\Software\Classes\VirtualStore\MACHINE\SOFTWARE\
для всех приложений.

В x64 ключ
HKEY_LOCAL_MACHINE\SOFTWARE\
подменяется на
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\
для 32-разрядных приложений.

Это реальный факт и от него никуда не деться.
Автор: igor_andreev
Дата сообщения: 08.06.2009 04:34
strat

Цитата:
был один гениальный ответ который я тут процитирую

супер!
Автор: Maza_Faka
Дата сообщения: 08.06.2009 07:19
strat

Цитата:
но был один гениальный ответ

+5
Автор: ZeroCrash
Дата сообщения: 08.06.2009 10:44
Всем привет! В общем сделал батничек, вроде работает, но не так как должен Хотя если разбить его на отдельные батники, то всё норм). Вот код:


Код: echo off
chcp 1251
setlocal enabledelayedexpansion

for /f "tokens=*" %%i in (Imena_M.txt) do call:set "%%i"
for /f "tokens=3 delims=_=" %%i in ('set value_') do set "randomValue1=%%i"
call:unset
for /f "tokens=*" %%i in (Otchestva_M.txt) do call:set "%%i"
for /f "tokens=3 delims=_=" %%i in ('set value_') do set "randomValue2=%%i"
call:unset
for /f "tokens=*" %%i in (Familiy_M.txt) do call:set "%%i"
for /f "tokens=3 delims=_=" %%i in ('set value_') do set "randomValue=%%i"
call:unset
echo Отчёт>Отчёты\%randomValue%.txt
echo %randomValue% %randomValue1% %randomValue2%>>Отчёты\%randomValue%.txt


for %%i in (1,2,3,4,5,6,7,8,9) do (
for %%j in (1,2,0) do set q_%%i_!random!=%%j
for %%j in (1,2,3,4,5,6,7,8,9) do set x_%%i_!random!=%%j
for %%j in (6,7,8) do set z_%%i_!random!=%%j
)

for %%i in (1,2,3,4,5,6,7,8,9) do (
     for /f "tokens=4 delims=_=" %%j in ('set q_%%i') do set q-%%i=%%j
     for /f "tokens=4 delims=_=" %%j in ('set x_%%i') do set x-%%i=%%j
     for /f "tokens=4 delims=_=" %%j in ('set z_%%i') do set z-%%i=%%j
     for /f "tokens=4 delims=_=" %%j in ('set y_%%i') do set y-%%i=%%j
)

echo %q-1%%x-1%.0%x-4%.19%z-6%%x-7%>>Отчёты\%randomValue%.txt



for %%i in (1,2,3,4) do (
        for %%j in (1,2,3,4) do set x_%%i_!random!=%%j
for %%j in (1,2,3,4,5,6,7,8,9) do set y_%%i_!random!=%%j
)

for %%i in (1,2,3,4,5) do (
        for /f "tokens=4 delims=_=" %%j in ('set x_%%i') do set x-%%i=%%j
for /f "tokens=4 delims=_=" %%j in ('set y_%%i') do set y-%%i=%%j
)

echo Отчёт>>Отчёты\%randomValue%.txt

for /f "tokens=*" %%i in (Ukicy.txt) do call:set "%%i"
for /f "tokens=3 delims=_=" %%i in ('set value_') do set "randomValue9=%%i"
call:unset
echo %randomValue9% %x-1%%y-1%-%x-2%%y-2%>>Отчёты\%randomValue%.txt


for %%i in (1,2,3,4,5) do (
for %%j in (5,4,3,5) do set x_%%i_!random!=%%j
for %%j in (1,2,3,4,5,6,7,8,9,0) do set y_%%i_!random!=%%j
)

for %%i in (1,2,3,4,5) do (
for %%j in (5,4,3,5) do set x_%%i_!random!=%%j
for %%j in (1,2,3,4,5,6,7,8,9,0) do set y_%%i_!random!=%%j
)

for %%i in (1,2,3,4,5) do (
for /f "tokens=4 delims=_=" %%j in ('set x_%%i') do set x-%%i=%%j
for /f "tokens=4 delims=_=" %%j in ('set y_%%i') do set y-%%i=%%j
)
echo Отчёт%x-1%-%y-2%%y-3%-%y-4%%y-5%>>Отчёты\%randomValue%.txt
for %%i in (1,2,3,4) do (
for %%j in (1,2,3,4,5,6,7,8,9,0) do set y_%%i_!random!=%%j

)
for %%i in (1,2,3,4) do (
for /f "tokens=4 delims=_=" %%j in ('set y_%%i') do set y-%%i=%%j
)
echo +Отчёт%y-1%%y-2%%y-3%%y-4%%y-5%>>Отчёты\%randomValue%.txt


for %%i in (1,2,3,4,5) do (
for %%j in (q,w,e,r,t,y,u,i,o,p,a,s,d,f,g,h,j,k,l,z,x,c,v,b,n,m) do set x_%%i_!random!=%%j
for %%j in (1,2,3,4,5,6,7,8,9,0) do set y_%%i_!random!=%%j
)

for %%i in (1,2,3,4,5) do (
for /f "tokens=4 delims=_=" %%j in ('set x_%%i') do set x-%%i=%%j
for /f "tokens=4 delims=_=" %%j in ('set y_%%i') do set y-%%i=%%j
)

echo %x-1%%x-6%%x-2%%x-3%%x-4%%y-3%%x-5%%x-1%%x-5%%x-4%%y-1%%y-2%@gmail.com - %y-1%%x-2%%y-2%%y-3%%x-3%%y-4%%x-1%%x-5%%y-5%%y-1%%y-4%%y-6%>>Отчёты\%randomValue%.txt

echo Отчёт>>Отчёты\%randomValue%.txt
echo Отчёт - %x-1%%x-6%%x-2%%x-3%%x-4%%y-3%%x-5%%x-1%%x-5%%x-4%%y-1%%y-2% - %y-1%%x-2%%y-2%%y-3%%x-3%%y-4%%x-1%%x-5%%y-5%%y-1%%y-4%%y-6%>>Отчёты\%randomValue%.txt
echo Отчёт - %x-1%%x-6%%x-2%%x-3%%x-4%%y-3%%x-5%%x-1%%x-5%%x-4%%y-1%%y-2% - %y-1%%x-2%%y-2%%y-3%%x-3%%y-4%%x-1%%x-5%%y-5%%y-1%%y-4%%y-6%>>Отчёты\%randomValue%.txt


:set
set "value_%random%=%~1"
goto:eof

:unset
for /f "tokens=1 delims==" %%i in ('set value_') do set "%%i="
Автор: Elroir
Дата сообщения: 08.06.2009 13:41
HaK1R

Цитата:
ты поставил errorlevel > 0. Вопрос: Почему больше? Кроме 0 и 1 errorlevel может принимает еще какие-нибудь значения или нет?

Errorlevel может принимать любое значение - зависит от того, что возвращает программа. Например, значения errorlevel, возвращаемые командой xcopy, могут быть следующими: 0, 1, 2, 4 и 5. Обычно (но не всегда), код возврата равный нулю - означает успешное завершение работы.
А команда после "||" сработает, только если errorlevel был больше нуля - так определили в Microsoft-е .
Автор: HaK1R
Дата сообщения: 08.06.2009 22:07
Elroir
Спасибо, буду знать.
ZeroCrash
я не понял в чем ошибка, но могу предположить что вот в этом

Код: @echo off
chcp 1251
setlocal enabledelayedexpansion

for /f "tokens=*" %%i in (Imena_M.txt) do call:set "%%i"
for /f "tokens=3 delims=_=" %%i in ('set value_') do set "randomValue1=%%i"
call:unset
for /f "tokens=*" %%i in (Otchestva_M.txt) do call:set "%%i"
for /f "tokens=3 delims=_=" %%i in ('set value_') do set "randomValue2=%%i"
call:unset
for /f "tokens=*" %%i in (Familiy_M.txt) do call:set "%%i"
for /f "tokens=3 delims=_=" %%i in ('set value_') do set "randomValue=%%i"
call:unset
echo Отчёт>Отчёты\%randomValue%.txt
echo %randomValue% %randomValue1% %randomValue2%>>Отчёты\%randomValue%.txt


for %%i in (1,2,3,4,5,6,7,8,9) do (
for %%j in (1,2,0) do set q_%%i_!random!=%%j
for %%j in (1,2,3,4,5,6,7,8,9) do set x_%%i_!random!=%%j
for %%j in (6,7,8) do set z_%%i_!random!=%%j
)

for %%i in (1,2,3,4,5,6,7,8,9) do (
for /f "tokens=4 delims=_=" %%j in ('set q_%%i') do set q_%%i=%%j
for /f "tokens=4 delims=_=" %%j in ('set x_%%i') do set x_%%i=%%j
for /f "tokens=4 delims=_=" %%j in ('set z_%%i') do set z_%%i=%%j
for /f "tokens=4 delims=_=" %%j in ('set y_%%i') do set y_%%i=%%j
)

echo %q-1%%x-1%.0%x-4%.19%z-6%%x-7%>>Отчёты\%randomValue%.txt



for %%i in (1,2,3,4) do (
for %%j in (1,2,3,4) do set x_%%i_!random!=%%j
for %%j in (1,2,3,4,5,6,7,8,9) do set y_%%i_!random!=%%j
)

for %%i in (1,2,3,4,5) do (
for /f "tokens=4 delims=_=" %%j in ('set x_%%i') do set x_%%i=%%j
for /f "tokens=4 delims=_=" %%j in ('set y_%%i') do set y_%%i=%%j
)

echo Отчёт>>Отчёты\%randomValue%.txt

for /f "tokens=*" %%i in (Ukicy.txt) do call:set "%%i"
for /f "tokens=3 delims=_=" %%i in ('set value_') do set "randomValue9=%%i"
call:unset
echo %randomValue9% %x-1%%y-1%-%x-2%%y-2%>>Отчёты\%randomValue%.txt


for %%i in (1,2,3,4,5) do (
for %%j in (5,4,3,5) do set x_%%i_!random!=%%j
for %%j in (1,2,3,4,5,6,7,8,9,0) do set y_%%i_!random!=%%j
)

for %%i in (1,2,3,4,5) do (
for %%j in (5,4,3,5) do set x_%%i_!random!=%%j
for %%j in (1,2,3,4,5,6,7,8,9,0) do set y_%%i_!random!=%%j
)

for %%i in (1,2,3,4,5) do (
for /f "tokens=4 delims=_=" %%j in ('set x_%%i') do set x_%%i=%%j
for /f "tokens=4 delims=_=" %%j in ('set y_%%i') do set y_%%i=%%j
)
echo Отчёт%x-1%-%y-2%%y-3%-%y-4%%y-5%>>Отчёты\%randomValue%.txt
for %%i in (1,2,3,4) do (
for %%j in (1,2,3,4,5,6,7,8,9,0) do set y_%%i_!random!=%%j

)
for %%i in (1,2,3,4) do (
for /f "tokens=4 delims=_=" %%j in ('set y_%%i') do set y_%%i=%%j
)
echo +Отчёт%y-1%%y-2%%y-3%%y-4%%y-5%>>Отчёты\%randomValue%.txt


for %%i in (1,2,3,4,5) do (
for %%j in (q,w,e,r,t,y,u,i,o,p,a,s,d,f,g,h,j,k,l,z,x,c,v,b,n,m) do set x_%%i_!random!=%%j
for %%j in (1,2,3,4,5,6,7,8,9,0) do set y_%%i_!random!=%%j
)

for %%i in (1,2,3,4,5) do (
for /f "tokens=4 delims=_=" %%j in ('set x_%%i') do set x_%%i=%%j
for /f "tokens=4 delims=_=" %%j in ('set y_%%i') do set y_%%i=%%j
)

echo %x-1%%x-6%%x-2%%x-3%%x-4%%y-3%%x-5%%x-1%%x-5%%x-4%%y-1%%y-2%@gmail.com - %y-1%%x-2%%y-2%%y-3%%x-3%%y-4%%x-1%%x-5%%y-5%%y-1%%y-4%%y-6%>>Отчёты\%randomValue%.txt

echo Отчёт>>Отчёты\%randomValue%.txt
echo Отчёт - %x-1%%x-6%%x-2%%x-3%%x-4%%y-3%%x-5%%x-1%%x-5%%x-4%%y-1%%y-2% - %y-1%%x-2%%y-2%%y-3%%x-3%%y-4%%x-1%%x-5%%y-5%%y-1%%y-4%%y-6%>>Отчёты\%randomValue%.txt
echo Отчёт - %x-1%%x-6%%x-2%%x-3%%x-4%%y-3%%x-5%%x-1%%x-5%%x-4%%y-1%%y-2% - %y-1%%x-2%%y-2%%y-3%%x-3%%y-4%%x-1%%x-5%%y-5%%y-1%%y-4%%y-6%>>Отчёты\%randomValue%.txt
goto :EOF

:set
set "value_%random%=%~1"
goto:eof

:unset
for /f "tokens=1 delims==" %%i in ('set value_') do set "%%i="
Автор: ZeroCrash
Дата сообщения: 10.06.2009 07:37
HaK1R

В выделенном мною участке кода :


Код: for %%i in (1,2,3,4,5) do (
for %%j in (q,w,e,r,t,y,u,i,o,p,a,s,d,f,g,h,j,k,l,z,x,c,v,b,n,m) do set x_%%i_!random!=%%j
for %%j in (1,2,3,4,5,6,7,8,9,0) do set y_%%i_!random!=%%j
)

for %%i in (1,2,3,4,5) do (
for /f "tokens=4 delims=_=" %%j in ('set x_%%i') do set x-%%i=%%j
for /f "tokens=4 delims=_=" %%j in ('set y_%%i') do set y-%%i=%%j
)

echo %x-1%%x-6%%x-2%%x-3%%x-4%%y-3%%x-5%%x-1%%x-5%%x-4%%y-1%%y-2%@gmail.com - %y-1%%x-2%%y-2%%y-3%%x-3%%y-4%%x-1%%x-5%%y-5%%y-1%%y-4%%y-6%>>Отчёты\%randomValue%.txt
Автор: 01MDM
Дата сообщения: 10.06.2009 09:59
ZeroCrash
С днюхой!

Область :unset служит для очистки переменных вида "%value_.....%", ну а %x_% и %y_% тоже самое, но они у тебя не очищаются. Получается что у тебя переменные из предыдущих блоков обрабатываются повторно в последующих блоках.

Есть два варианта:
1. Для каждого блока сценария создать вместо "x" и "y" уникальные переменные
2. Написать :unset_2 для переменных вида %x_.....% и %y_.....%
Автор: Boxa_win
Дата сообщения: 11.06.2009 12:06
Как в бат-файле сравнить дату создания файла с текущей и если не совпадает переписать его
Автор: Firemanser
Дата сообщения: 11.06.2009 12:38
Можно ли проделать такую задачу? А то, насколько я понял, командная строка не может работать с бинарными данными.
В одной папке лежат файл a.dat, почти весь заполненный бинарными данными, причем последние 9 символов - текстовые данные, и пустой файл b.dat длиной 0 байт.
Нужно открыть первый файл, скопировать оттуда все данные кроме последних 9 символов и вставить во второй файл.
Автор: William Gates
Дата сообщения: 11.06.2009 12:43
Всем привет!
Еще одна задача для знатоков. Есть катaлог в котором находится куча файлов с названием name_data_time.zip (напр., файл_01.01.08_01.00.zip). Нужно удалить все файлы из этого каталога, кроме файлов в названии которых есть 1 и 15 число каждого месяца. Можно это реализовать с помощью bat-файла?
Автор: smirnvlad
Дата сообщения: 11.06.2009 15:46
William Gates

Код:
@echo off
for %%i in (*_??.??.??_??.??.zip) do set "filename=%%i" && call:delfiles
goto:eof

:delfiles
if not "%filename:~-18,2%"=="01" (
if not "%filename:~-18,2%"=="15" (
del "%filename%"
)
)
Автор: ZeroCrash
Дата сообщения: 11.06.2009 17:25
01MDM

Спасибо
Я и до этого пробовал предложенный тобой первый вариант, просто я забыл заменить x и y на другие в команде вывода в текстовый файл
Автор: lorents
Дата сообщения: 11.06.2009 22:44
не подскажите можно ли сделать проверку, запущено ли файл autorun.exe, если да, то вывести на передний план, если нет, то запустить autorun.exe?
Автор: HaK1R
Дата сообщения: 11.06.2009 23:08
lorents

Цитата:
не подскажите можно ли сделать проверку, запущено ли файл autorun.exe, если да, то вывести на передний план, если нет, то запустить autorun.exe?


можно
Автор: lorents
Дата сообщения: 11.06.2009 23:16
HaK1R
а можно примерчик?
Автор: Maza_Faka
Дата сообщения: 12.06.2009 06:41
lorents

Цитата:
вывести на передний план

Что вывести?
Автор: HaK1R
Дата сообщения: 12.06.2009 09:38
tasklist | findstr /i "autorun" 1>nul 2>&1
if %errorlevel%==0 (
REM Сюда ставишь вывод того что нужно
) else (
start "" /max "C:\1\2\3\autorun.exe"
)
Автор: lorents
Дата сообщения: 12.06.2009 10:30
Maza_Faka

Цитата:
Что вывести?

вывести запущенный autorun.exe на передний план

HaK1R
спасибо!)
А как можно вывести запущенный autorun.exe на передний план?
Автор: ZeroCooool
Дата сообщения: 12.06.2009 10:53
Нужен совет. Требуется батник который бы выполнял некоторые функции. А именно. На компе установлен маил агент. Нужен батник который бы при запуске выключал маил агент и удалял его без лишних вопросов. Либо проще. Как запретить запуск определенной программы опять же речь о маил агенте. Мой вариант почему то не работает.

@echo off
taskkill /f /im magent.exe
del "C:\Program Files\Mail.Ru\Agent\magent.exe"

а вот как запретить запуск не знаю .
Автор: Maza_Faka
Дата сообщения: 12.06.2009 11:03
lorents

Цитата:
вывести запущенный autorun.exe на передний план

Процесс autorun.exe имеет окно?

ZeroCooool

Цитата:
Как запретить запуск определенной программы

Пуск -> Выполнить -> msconfig -> Автозапуск
Автор: lorents
Дата сообщения: 12.06.2009 11:06

Цитата:
Процесс autorun.exe имеет окно?

да
Автор: Boxa_win
Дата сообщения: 12.06.2009 14:26
Знатоки, вопрос то плевый
Как в бат-файле сравнить дату создания файла с текущей и если не совпадает переписать его
Автор: HaK1R
Дата сообщения: 12.06.2009 14:57
Boxa_win
красный-путь к котологу с файлом
синий-имя файла с расширением
(можно без учета регистра)

Код: @echo off
for /f "tokens=1" %%i in ('dir "C:\program files\adobe\reader 9.0\" ^| find /i "Readme.htm"') do (
if not "%%i"=="%date%" (echo нужна перезапись)
)
Автор: Boxa_win
Дата сообщения: 12.06.2009 15:15
HaK1R
Спасибо работает, а нет стандартной утилитки выдающей дату создания файла по имени без цикла
Автор: HaK1R
Дата сообщения: 12.06.2009 15:38
Boxa_win
стандартной думаю нет
Автор: Boxa_win
Дата сообщения: 12.06.2009 15:38
HaK1R
А в конструкции
for /f "tokens=1" %%i in ('dir "C:\program files\adobe\reader 9.0\" ^| find /i "Readme.htm"') do
можно както использовать параметры, типа
for /f "tokens=1" %%i in ('dir %1 ^| find /i %2') do
а то у меня не проходят
Автор: HaK1R
Дата сообщения: 12.06.2009 16:55
Boxa_win

Код: for /f "tokens=1" %%i in ('dir "%~1" ^| find /i "%~2"') do
Автор: Maza_Faka
Дата сообщения: 12.06.2009 17:59
lorents

Цитата:
вывести запущенный autorun.exe на передний план

Утилиты CMDOW.EXE и NIRCMD.EXE имеют функции активирования окна. См. справку.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778

Предыдущая тема: во вкладке автозагрузка


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