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

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

Автор: superman md
Дата сообщения: 20.03.2011 16:43
Всё равно имеем полный доступ...
Автор: 01MDM
Дата сообщения: 20.03.2011 17:08
superman md

Цитата:
Всё равно имеем полный доступ...

Поставь задержку:

Код:
@echo off
setlocal

pushd "%~dp0"

for /f "tokens=2" %%i in (' echo list volume ^| diskpart ') do set /a volume=%%i+1

(

echo select vdisk file="%~dp0asus.vhd"
echo attach vdisk

) | diskpart

2>nul waitfor faik /t 3

(
echo select volume %volume%
echo attributes volume set readonly
echo exit

) | diskpart

popd
Автор: superman md
Дата сообщения: 20.03.2011 17:24
01MDM
Спасибо огромное, всё работает...
Я уже и не надеялся..
Сам бы точно ничего не сделал...
Автор: Vladins
Дата сообщения: 20.03.2011 20:08
Для каждого *.mov файла нужно создать *.avs файл с некоторым текстом. Пытаюсь это сделать с помощью батника:

Код:
chcp 1251
@echo off
for %%i in (*.mov) do 1>%%~ni.avs (
echo LoadPlugin("C:\Program Files\XviD4PSP 5\dlls\AviSynth\plugins\mvtools2.dll"^)
echo LoadPlugin("C:\Program Files\XviD4PSP 5\dlls\AviSynth\plugins\MT.dll"^)
echo LoadPlugin("C:\Program Files\XviD4PSP 5\dlls\AviSynth\plugins\QTSource.dll"^)
echo QTInput("%%~ni.mov"^)
echo MT("""^
echo multinum=2^
echo multiden=1^
echo mask=2^
echo ml=10000^
echo super = MSuper(pel=2, hpad=16, vpad=16^)
echo bv1=MAnalyse(super, isb=true, blksize=16, overlap=8, searchparam=1, plevel=2^)
echo fv1=MAnalyse(super, isb=false,blksize=16, overlap=8, searchparam=1, plevel=2^)
echo forward_re = MRecalculate(super, fv1, blksize=8, overlap=4, thSAD=100, searchparam=1^)
echo backward_re = MRecalculate(super, bv1, blksize=8, overlap=4, thSAD=100, searchparam=1^)
echo MFlowFps(super,backward_re,forward_re,num=FramerateNumerator(last)*multinum,den=FramerateDenominator(last)*multiden,mask=mask,ml=ml^)
echo """, threads=4, overlap=16, splitvertical=false^)
)
pause
exit
Автор: king_stiven
Дата сообщения: 20.03.2011 22:23
Vladins
утилиты?
Автор: Ortios
Дата сообщения: 20.03.2011 22:42
Vladins

Цитата:
Но на строке  echo MFlowFps(super,backward_re,forward_re,num=FramerateNumerator(last)*multinum,den=FramerateDenominator(last)*multiden,mask=mask,ml=ml^) батник вылетает, что то неправильно с символами.Подскажите что неправильно?

Надо так:

Код: echo MFlowFps(super,backward_re,forward_re,num=FramerateNumerator(last^)*multinum,den=FramerateDenominator(last^)*multiden,mask=mask,ml=ml^)
Автор: Vladins
Дата сообщения: 21.03.2011 01:39
Ortios Спасибо, работает!
king_stiven Не понял суть вопроса...

Автор: FantoMax2
Дата сообщения: 23.03.2011 08:29
Всем доброго времени суток!

Помогите сделать следующий batник:
чтобы при двойном клике по файлу появлялось окно оболочки примерного следующего формата:

1.ping
2.tracert
3.hostname
4.ipconfig
Введите порядковый номер:

При вводе номера чтобы данное окно закрывалось и открывалось новое окно, либо пустое для ввода имени сервера или компьютера или IP-адреса (команда ping или tracert), либо с выводом соответствующей информации (команда hostname или ipconfig)

С уважением!
Автор: res2001
Дата сообщения: 23.03.2011 09:21
FantoMax2

Код: @echo off
echo 1.ping
echo 2.tracert
echo 3.hostname
echo 4.ipconfig
set /p num="Введите порядковый номер: "
cls
if "%num%" equ "1" goto:ping
if "%num%" equ "2" goto:tracert
if "%num%" equ "3" goto:hostname
if "%num%" equ "4" goto:ipconfig
goto:eof
:ping
set /p adr="Введите IP адрес или имя хоста: "
ping %adr%
goto:eof

:tracert
:hostname
:ipconfig
Автор: FantoMax2
Дата сообщения: 23.03.2011 10:00

Цитата:
@echo off
echo 1.ping
echo 2.tracert
echo 3.hostname
echo 4.ipconfig
set /p num="Введите порядковый номер: "
cls
if "%num%" equ "1" goto:ping
if "%num%" equ "2" goto:tracert
if "%num%" equ "3" goto:hostname
if "%num%" equ "4" goto:ipconfig
goto:eof
:ping
set /p adr="Введите IP адрес или имя хоста: "
ping %adr%
goto:eof

:tracert
:hostname
:ipconfig


Сейчас при нажатии в командной оболочке цифры 3 или 4 окно пропадает, а нужно чтобы выводилась требуемая по команде информация, лучше чтобы открывалось новое окно командной оболочки с нужной инфой. Помогите сделать :-( очень нужно!
Автор: res2001
Дата сообщения: 23.03.2011 10:30
FantoMax2

Цитата:
Сейчас при нажатии в командной оболочке цифры 3 или 4 окно пропадает, а нужно чтобы выводилась требуемая по команде информация, лучше чтобы открывалось новое окно командной оболочки с нужной инфой. Помогите сделать

Ну да, я сделал только пинги, думал ты сам доработаешь остальные пункты по аналогии.
Полностью видимо так будет:
[more=Код]
Код: @echo off
echo 1.ping
echo 2.tracert
echo 3.hostname
echo 4.ipconfig
set /p num="Введите порядковый номер: "
cls
if "%num%" equ "1" goto:ping
if "%num%" equ "2" goto:tracert
if "%num%" equ "3" goto:hostname
if "%num%" equ "4" goto:ipconfig
goto:eof
:ping
set /p adr="Введите IP адрес или имя хоста: "
ping %adr%
goto:end
:tracert
set /p adr="Введите IP адрес или имя хоста: "
tracert %adr%
goto:end
:hostname
hostname
goto:end
:ipconfig
ipconfig /all
:end
pause
Автор: FantoMax2
Дата сообщения: 23.03.2011 10:36

Цитата:
Ну да, я сделал только пинги, думал ты сам доработаешь остальные пункты по аналогии.
Полностью видимо так будет:
Код


Огромное спасибо за помощь! Буду дорабатывать дальше под свои цели, чтобы окно не пропадало, а открывалось новое с инфой!

Автор: res2001
Дата сообщения: 23.03.2011 10:45
FantoMax2
Код поправил, добавил паузу в конце, чтобы окно не закрывалось.
Автор: FantoMax2
Дата сообщения: 23.03.2011 10:51

Цитата:
Код поправил, добавил паузу в конце, чтобы окно не закрывалось.


Огромное спасибо за помощь! Только начал изучать BAT-файлы, так что ещё много чему учиться!

Спасибо!
Автор: sL4yer
Дата сообщения: 23.03.2011 14:02
Доброе время суток!

Сделал батник, который конвертирует .WAV и .FLAC файлы в .MP3 используя консольные утилиты flac и lame. Условием работы программы есть наличие в %ProgramFiles% самых утилит (\FLAC\flac.exe и \LAME\lame.exe).

Сам являюсь не очень опытным, или может очень неопытным в написании батников, потому хотелось бы узнать Ваше мнение на счет этого скрипта, может какие-то недочеты, какой-то кусок кода реализовать по-другому, более продуктивней или логичней. Жду отзывов .


Код: @echo off

REM УКАЗЫВАЕМ ПУТЬ ГДЕ НАХОДЯТСЯ КОНВЕРТЕРЫ
set PATH="%ProgramFiles%\FLAC";"%ProgramFiles%\LAME";%PATH%

if (%1) == () (
    echo Error: Arg required!
    goto :EOF
)

REM ПРОВЕРЯЕМ СУЩЕСТВУЕТ ЛИ КУЙ В ПАПКЕ НАЗНАЧЕНИЯ (%1)
if /i exist "%1\*.cue" (
    dir /b "%1\*.cue">cue_name.tmp
    set /p cue_name=<cue_name.tmp
) else (
    echo Error: .cue not found
    goto :EOF
)

REM ПРОВЕРЯЕМ СУЩЕСТВУЮТ ЛИ ФАЙЛЫ (.FLAC)
if /i exist "%1\*.FLAC" (
    REM ПЕРЕБИРАЕМ ВСЕ ФАЙЛЫ В ПАПКЕ НАЗНАЧЕНИЯ И ПЕРЕДАЕМ ИХ КОНВЕРТЕРУ В КАЧЕСТВЕ ПАРАМЕТРОВ
    for /f "tokens=* " %%i in ('dir /b %1\*.FLAC') do (
        FLAC -d "%1\%%i" -f
        call :convert %1 "%%i"
    )
REM ТОЖЕ САМОЕ ДЛЯ (.WAV)
) else if /i exist "%1\*.WAV" (
    for /f "tokens=* " %%i in ('dir /b %1\*.WAV') do (
        call :convert %1 "%%i"
    )
)
pause
goto :EOF

:convert
SETLOCAL
REM ИЩЕМ В .CUE СТРОЧКИ И ЗАПИСЫВАЕМ ИХ В ВРЕМЕННЫЕ ФАЙЛЫ
for %%i in (genre date title performer) do (
    findstr /i /C:"%%i" "%1\%cue_name%" >%%i.tmp
    set /p %%i=<%%i.tmp
)
REM ИМЯ СОХРАНЯЕМОГО (ПОСЛЕ КОНВЕРТАЦИИ ) ФАЙЛА
set file_name=%~n2
REM ТУТ ИЗВРАЩЕНСТВО, НО ПО ДРУГОМУ НЕ ДОДУМАЛСЯ КАК. ПЕРЕДАЁМ В LAME ИМЯ (.WAV) ФАЙЛА, ФАЙЛА (.MP3), ТЕГИ И "КАЧЕСТВО"
lame -q 0 -b 320 "%1\%~n2".wav "%1\%~n2".mp3 --ty "%date:~9,100%" --ta "%performer:~11,-1%" --tg "%genre:~10,100%" --tl "%title:~7,-1%" --tn "%file_name:~0,2%" --tt "%file_name:~4,100%"
ENDLOCAL
del *.tmp
Автор: res2001
Дата сообщения: 23.03.2011 15:24
sL4yer

Цитата:
dir /b "%1\*.cue">cue_name.tmp
set /p cue_name=<cue_name.tmp

Если в каталоге несколько cue файлов, то возьмется только последний возвращенный dir. Тебя это устраивает?
Можно присваивать переменным и без временного файла:
for /f "tokens=* " %%i in ('dir /b %1\*.сue') do set cue_name=%%~i
Автор: sL4yer
Дата сообщения: 23.03.2011 15:57
res2001

Цитата:
Если в каталоге несколько cue файлов, то возьмется только последний возвращенный dir. Тебя это устраивает?

да, условие, что в папке должен быть только один cue.

Цитата:
for /f "tokens=* " %%i in ('dir /b %1\*.сue') do set cue_name=%%~i

точно! Я забыл, что поставил проверку вначале , точнее я её поставил после того как написал алгоритм. Только в этом выражении не понятно %%~i
что означает эта тильда?
Автор: res2001
Дата сообщения: 23.03.2011 16:05
sL4yer

Цитата:
этом выражении не понятно %%~i
что означает эта тильда?

убирает обрамляющие кавычки, если они есть.

Добавлено:
sL4yer
И еще, судя по коду у тебя обрабатываются флаки, если их нет вавы. А если в каталоге и то и другое есть, то обработаются только флаки. Это так и задумано?
Кстати, перебор файлов удобнее делать таким циклом: for %%i in (*.wav *.flac) do ...
без дира.

Добавлено:
И можно не проверять на присутствие файлов - если файлов нет, то цикл не выполнится, а тебе это и нужно.
Автор: INKOGNI
Дата сообщения: 23.03.2011 16:22
Народ, вобщем такой вопрос. Можно ли создать батник, который убирает из скаченных из интернета файлов в атрибутах которых появляется предупреждение "этот файл получен с другого компьютера..." и чтоб это снять, нужно нажимать кнопку"разблокировать". Этот атрибут появляется при скачивании файла например мозилой или IE. А когда скачиваешь много файлов, то надоедает заходить в свойства каждого. Можно ли написать батник для разблокировки всех файлов, находящихся в одной папке с этим же батником?
Автор: 01MDM
Дата сообщения: 23.03.2011 19:13
INKOGNI
А как это воспроизвести? У меня такого нет.

Посмотрел в свойствах файла, есть кнопка разблокировать, но зачем она? Все и так открывается.
Автор: INKOGNI
Дата сообщения: 23.03.2011 19:22
01MDM
Просто сохранить какую-нибудь картинку или скачать файл через Mozilla Firefox. И потом посмотреть в свойствах скаченного файла. Насколько я понял, то создается дополнительный информационный поток данных NTFS. Например если проверить заблокированную картинку антивирусом (я использую касперского), то в отчете будет, что проверено 2 файла. Если разблокировать, то при проверке 1 файл как и есть. Вобщем нашел в интернете утилу, которая удаляет эти "блочные" потоки у файлов.
Если интересно, то можно прочитать тут:
http://technet.microsoft.com/ru-ru/sysinternals/bb897440

для разблокировки сразу многих файлов использовал утилу STREAMS (от Марка Руссиновича) с ключом -d
Автор: 01MDM
Дата сообщения: 23.03.2011 19:47
INKOGNI
Ага. посмотрел, файлы действительно с альтернативным потоком.
Автор: kirsha
Дата сообщения: 23.03.2011 19:53
INKOGNI
А не проще в групповых политиках включить: Административные шаблоны>>Компоненты Widows>>Диспетчер вложений>>Удаление сведений о зоне происхождения.
Автор: INKOGNI
Дата сообщения: 23.03.2011 20:14
kirsha
мне нужно было именно решение в виде батника или утилита, которая удаляет эти потоки. Похоже с батником возникло затруднение. Зато на просторах инета нашел несколько решений. Например утилитку STREAMS (от Марка Руссиновича) с ключем -d и потоки в указанной директории у всех файлов пропадают автоматом. И нет необходимости настраивать виндовс или разблокировать каждый файл по отдельности.

Добавлено:
Вот мое решение: http://rghost.ru/4896824
Народ, как исправить батник, у меня стоит папка "C:\1" на удаление потоков, а мне нужно, чтоб удалялось в той же папке, где сам батник и утила?
Автор: 01MDM
Дата сообщения: 23.03.2011 20:44
INKOGNI

Цитата:
Похоже с батником возникло затруднение.

А зачем батник, когда есть streams? Можно и батником:

Код:
@echo off

for %%i in (*.*) do (

ren "%%i" "%%i.stream"
1>"%%i" type "%%i.stream"
del "%%i.stream"

)
Автор: INKOGNI
Дата сообщения: 23.03.2011 20:53
01MDM
отлично, спасибо, то что нужно было изначально
Автор: sL4yer
Дата сообщения: 23.03.2011 23:22
res2001

Цитата:
А если в каталоге и то и другое есть, то обработаются только флаки. Это так и задумано?

нет, вот тут и прокол . Если есть флак - переганяю его в вейв, а потом вейв в мп3. Нужно просто переставить местами .


Цитата:
таким циклом: for %%i in (*.wav *.flac) do ...

точно! Только нужно добавить %1\*.wav, так как батник запускается из другой директории, и это FLAC -d "%1\%%i" -f заменить FLAC -d "%%i" -f. Так увлёкся "for /f", что забыл что существует и другой способ .


Цитата:
И можно не проверять на присутствие файлов - если файлов нет, то цикл не выполнится, а тебе это и нужно.

думаю лучше добавить в конец что-то типа такого, что бы было понятно, почему программа вылетела/не работает .
) else (
    echo Error: Files not found.
)

конечная переработка

Код:
if /i exist "%1\*.WAV" (
    REM ПЕРЕБИРАЕМ ВСЕ ФАЙЛЫ В ПАПКЕ НАЗНАЧЕНИЯ И ПЕРЕДАЕМ ИХ КОНВЕРТЕРУ В КАЧЕСТВЕ ПАРАМЕТРОВ
    for %%i in (%1\*.WAV) do call :convert %1 "%%i"
) else if /i exist "%1\*.FLAC" (
    REM ТОЖЕ САМОЕ ДЛЯ (.FLAC)
    for %%i in (%1\*.FLAC) do (
        FLAC -d "%1\%%i" -f
        call :convert %1 "%%i"
    )
) else (
    echo Error: Files not found.
)
Автор: Mr_Hat
Дата сообщения: 24.03.2011 04:11
Прошу помощи в решении возникшего вопроса.

Написан стартово-контрольный пакетный файл с целью установки ПО

коротко выглядит так

Код:
@echo off
if not exist RevoUninProSetup.exe goto error
start /wait RevoUninProSetup.exe /verysilent /sp-
if not exist "%ProgramFiles%\VS Revo Group\Revo Uninstaller Pro\" goto error
taskkill /f /im "RevoUninPro.exe" /t
cd ~
echo N|start /wait regedit /s settings.reg
copy /y Patch-JW.exe "%ProgramFiles%\VS Revo Group\Revo Uninstaller Pro\"
cd /d "%ProgramFiles%\VS Revo Group\Revo Uninstaller Pro\"
start /wait Patch-JW.exe
del /f /q Patch-JW
start RevoUninPro.exe
Автор: res2001
Дата сообщения: 24.03.2011 08:47
sL4yer

Цитата:
нет, вот тут и прокол

Местами переставил, теперь наоборот: есть вавы - обрабатываются только они, а флаки нет.
Думаю лучше сделать так:

Код: if /i not exist "%1\*.WAV" if /i not exist "%1\*.FLAC" echo Error: Files not found. & exit
REM ПЕРЕБИРАЕМ ВСЕ ФАЙЛЫ В ПАПКЕ НАЗНАЧЕНИЯ И ПЕРЕДАЕМ ИХ КОНВЕРТЕРУ В КАЧЕСТВЕ ПАРАМЕТРОВ
for %%i in (%1\*.WAV) do call :convert %1 "%%i"
REM ТОЖЕ САМОЕ ДЛЯ (.FLAC)
for %%i in (%1\*.FLAC) do (
FLAC -d "%1\%%i" -f
call :convert %1 "%%i"
)
Автор: sL4yer
Дата сообщения: 24.03.2011 15:45
res2001

это для случая, если у меня в папке лежат файлы с одного альбома, но только с разными расширениями, типа этого:
01. Refuse-Resist.wav

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071

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


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