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

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

Автор: Pacho
Дата сообщения: 20.01.2010 09:07
Всё оказалось гораздо проще:

Код: for /f "skip=2 tokens=2,*" %%c in ('reg query HKLM\Software\Classes\.!!! /v PerceivedType') do echo PerceivedType=%%d
Автор: mugil_cephalus
Дата сообщения: 20.01.2010 11:29
Kirillhome

Цитата:
И фигурных скобочек ещё одних (в описании команды) - ой, не хватает.

да, я как раз про это, опять опечатка

Добавлено:
dima1978
http://forum.ru-board.com/topic.cgi?forum=62&topic=9040&start=1340#11
Автор: Kirillhome
Дата сообщения: 20.01.2010 17:15
mugil_cephalus
dima1978 писал

Цитата:
Для примера нужно разархивировать файл с паролем, в котором присутствует символ ("):
RaR x -ad -pp"Rx0#nwU5cd sample.rar

Это не проходит УЖЕ в командной строке... %* - не поможет
Т.е. передаёт правильно (как и другие варианты, к примеру - ^"), но RAR на этом "затыкается"

Код:
set "ful_par=x -ad -pp^"Rx0#nwU5cd sample.rar"
echo RaR %ful_par%
echo %ful_par%
RaR %ful_par
Автор: mugil_cephalus
Дата сообщения: 20.01.2010 18:38
Kirillhome
я конкретную не смотрел, - просто помню - похожее встречал, - там еще был фокус, просто не пробовал: подойдет ли он в этой конкретной задаче - http://forum.ru-board.com/topic.cgi?forum=62&topic=9040&start=1340#14
Автор: Kirillhome
Дата сообщения: 20.01.2010 19:10
mugil_cephalus
Да какая разница, что так:

Код:
set "ful_par=x -ad -pp^"Rx0#nwU5cd sample.rar"
echo RaR %ful_par%
echo %ful_par%
RaR %ful_par%
Автор: mugil_cephalus
Дата сообщения: 20.01.2010 20:19
а прога winrar? тогда - http://forum.ru-board.com/forum.cgi?action=filter&forum=5&filterby=topictitle&word=winrar
Автор: takt03
Дата сообщения: 20.01.2010 21:45
Не знаю чего так выходит BorlandIMHO

Текущая кодовая страница: 1251
Системе не удается найти указанный путь.
Системе не удается найти указанный путь.
командой, исполняемой программой или пакетным файлом.
"d" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.

ПРога не пашет (
Пробелы удалены.


@echo off
chcp 1251

set FTPSERVER=***
set FTPUSER=***
set FTPPASSWORD=***
set "FTPFOLDER=/incoming/дальше идёт моя папка"
set "LOCALFOLDER=c:\Program Files\QIP\Users\"
1>"%~dp0ftpscript.tmp" (
echo open %FTPSERVER%
echo %FTPUSER%
echo %FTPPASSWORD%
echo binary
echo literal pasv
)
for /f "delims=" %%D in ('dir /a:d /b "%LOCALFOLDER%*"') do call :FLDCHK "%%~dpnxD" "/%%~nxD"
1>>"%~dp0ftpscript.tmp" echo by

ftp /s:"%~dp0ftpscript.tmp"
del %~dp0ftpscript.tmp

goto :EOF


:FLDCPY
1>>"%~dp0ftpscript.tmp" (
echo mkdir "%FTPFOLDER%%~2"
echo cd "%FTPFOLDER%%~2"
echo lcd "%~dpnx1"
)
for /f "delims=" %%A in ('dir /B /A:-D %1') do 1>>"%~dp0ftpscript.tmp" (
echo put "%%~nxA"
)

for /f "delims=" %%B in ('dir /B /A:D %1') do call :FLDCPY "%~1\%%~nxB" "%~2/%%~nxB"

goto :EOF
:FLDCHK
pushd "%~1"
for /f "delims=" %%E in ('dir /a:d /b *') do (
if "%%~nxE" == "History" (call :FLDCPY "%%~dpnxE" "%~2/%%~nxE") else (call :FLDCHK "%%~dpnxE" "%~2/%%~nxE")
)
popd
goto :EOF
Автор: mugil_cephalus
Дата сообщения: 20.01.2010 22:58
Kirillhome

Цитата:
set "ful_par=x -ad -pp^"Rx0#nwU5cd sample.rar"

надо так - set "var=-pp"Rx0#nwU5cd"
F:\Documents and Settings\admin>set "var=-pp"Rx0#nwU5cd"

F:\Documents and Settings\admin>set var
var=-pp"Rx0#nwU5cd

F:\Documents and Settings\admin>


Добавлено:

Цитата:
что так (в командной строке):
c:\>RaR x -ad -pp"Rx0#nwU5cd sample.rar

Всё едино - Rar - выдаёт ошибку при запуске.

В данном случае надо обращаться на форум к разрботчикам Rar-а, что бы они сказали - можно ли вообще передать в качестве параметра (составной части параметра) кавычку.

походу так...

Добавлено:
Kirillhome
dima1978
На что следует обращать внимание при выборе пароля

используйте пароль со смешанными регистрами букв;
используйте пароль с небуквенными символами (цифры, знаки препинания);
используйте пароль, который просто запомнить, чтобы его не записывать на бумаге или другом носителе;
используйте пароль, который способны набрать быстро, лучше всего даже не глядя на клавиатуру. Это исключит возможность, когда кто-то подсматривает за вами во время набора пароля.
Максимальная длина пароля для RAR-архива составляет 127 символов. Пароли, превышающие данный размер автоматически обрезаются до максимально допустимой длины.

Благодаря поддержке Unicode в WinRAR не существует никаких ограничений на символы в паролях архивов.Вместе с тем, имейте в виду, что не все современные операционные системы поддерживают Unicode..
http://www.win-rar.ru/study/part2/password.php
http://www.win-rar.ru/search/?q=%EF%E0%F0%EE%EB%FC
http://www.win-rar.ru/support/knowledge/detail.php?ID=1021

Добавлено:
F:\Program Files\WinRAR\rar.txt:
-p[x] Зашифровать файлы, используя строку <x> в качестве пароля

Пароль регистрозависимый (т.е. прописные и строчные буквы
различаются). Если вы не укажете пароль в командной строке
(после -p), то RAR запросит ввод пароля, выдав сообщение
"Введите пароль".

Пример:

rar a -pmyhoney secret1 *.txt

В данном примере все файлы *.txt добавляются в архив и шифруются
с паролем "myhoney".

Код: "F:\Program Files\WinRAR\rar.exe" a -pmyhoney secret1 *.txt
"F:\Program Files\WinRAR\rar.exe" a -pmyh"oney secret1 *.txt
pause
Автор: Pacho
Дата сообщения: 21.01.2010 08:13
Как в батнике проверить, в какой ОС мы работаем: 32 или 64-bit, а также какая локализация ОС?
Автор: noiseless
Дата сообщения: 21.01.2010 09:01
Pacho

Код: @ECHO OFF
IF NOT "%OS%"=="Windows_NT" GOTO Syntax
IF "%~1"=="" GOTO Run


:Syntax
ECHO.
ECHO Win3264.bat, Version 1.00 for Windows NT 4 and later
ECHO Check if Windows is a 32 or 64-bits version
ECHO.
ECHO Usage: WIN3264
ECHO.
ECHO Returns: The result will be displayed on screen, and a return
ECHO code ("errorlevel") of 32 or 64 will be returned
ECHO.
ECHO Written by Rob van der Woude
ECHO http://www.robvanderwoude.com
ECHO.
ECHO.


:Run
IF DEFINED ProgramFiles(x86) (
    FOR /F "tokens=1 delims=[" %%A IN ('VER') DO ECHO %%A^(64-bits^)
    EXIT /B 64
) ELSE (
    FOR /F "tokens=1 delims=[" %%A IN ('VER') DO ECHO %%A^(32-bits^)
    EXIT /B 32
)
Автор: dima1978
Дата сообщения: 21.01.2010 09:30
mugil_cephalus

Вот так без кавычек проходит без проблем:

Цитата:
G:\scripts\test>"F:\Program Files\WinRAR\rar.exe" a -pmyhoney secret1 *.txt

Как только в пароле появляются кавычки архивация не происходит

Цитата:
G:\scripts\test>"F:\Program Files\WinRAR\rar.exe" a -pmyh"oney secret1 *.txt

Так что вопрос пока остался не ясным
Автор: Pacho
Дата сообщения: 21.01.2010 09:57

Цитата:
Как в батнике запустить программу, чтобы при этом автоматически выдавался запрос на повышение прав? (Windows 7/Vista/2008)

Консольной команды не нашёл. Но нашёл как реализовать это через JScript:
Код: var objShell = new ActiveXObject('Shell.Application');
objShell.ShellExecute('Программа.exe', 'параметры', '', 'runas', 1);
Автор: mugil_cephalus
Дата сообщения: 21.01.2010 11:39
dima1978
я считаю, как и Kirillhome (если я ошибочно его понял, он меня поправит) , что дело не в cmd.exe, а в rar.exe - так что нужно обращаться в суппорт
Автор: mugil_cephalus
Дата сообщения: 21.01.2010 12:10
dima1978
листинг (запуск в консоли command-line mode файла bat2.bat) :

X:\>bat2.bat quote"quote

X:\>echo %0 - bat2.bat
%0 - bat2.bat

X:\>echo %1 - quote"quote
%1 - quote"quote

X:\>pause
Для продолжения нажмите любую клавишу . . .


Код: echo %%0 - %0
echo %%1 - %1
pause
Автор: AnGo
Дата сообщения: 21.01.2010 12:23
Всем привет!
Простой вопросик. Имеется некий батничек в котором выполняется копирование файлов, диск с которого копируется задается через параметр, что-то типа:
xcopy %1\*.* c:\temp /S
Ежели не задать %1, то будет скопирован весь текущий каталог.
В связи с эти и вопрос, как проверить, что задана буква диска, а если нет, то сказать юзеру "Задай букву диска, скотина!" и прекратить выполнение?
Thx!
Автор: dima1978
Дата сообщения: 21.01.2010 12:39
mugil_cephalus

А поподробней если можно. Как этот код

Цитата:
echo %%0 - %0
echo %%1 - %1
pause

привязать к архивированию файлов Rar-ом

Цитата:
rar a -pmyh"oney secret1 *.txt
Автор: rayalex981
Дата сообщения: 21.01.2010 12:58
Необходимо создать текстовый файл с текстом внутри:

[General]
Output=C:\Kassa\log.txt
Quit=1
CheckAndRepair=0

Для создания использую команду ECHO:

ECHO [General]>qq.prn
ECHO Output=C:\Kassa\log.txt>>qq.prn
ECHO Quit=1>>qq.prn
ECHO CheckAndRepair=0>>qq.prn

В итоге имею файл с текстом:

[General]
Output=C:\Kassa\log.txt
Quit=

Что я делаю не так???

Если написать ECHO Quit=1 >>qq.prn, т.е. с пробелом перед ">", то все работает, но и пробел копируется.
Если написать ECHO Quit=11>>qq.prn, то опять все работает, но зачем мне две единицы? ))
А ECHO CheckAndRepair=0>>qq.prn вообще не записывается. Обидно... Чего-то я не знаю... )))
Автор: king_stiven
Дата сообщения: 21.01.2010 13:05
AnGo
Много способов, задай условия. чему должно или что должен содержать %1

например проверить %1 на наличие :\


Код: @echo off
echo %1 | find ":\" || goto rty
xcopy %1\*.* d:\temp /S
goto :eof
:rty
echo user down!
pause
goto :eof
Автор: mugil_cephalus
Дата сообщения: 21.01.2010 13:25
AnGo

Код: if /i "_%~1" equ "_" goto:check
if /i "_%~1" equ "_a" goto:next
if /i "_%~1" equ "_b" goto:next
if /i "_%~1" equ "_c" goto:next
if /i "_%~1" equ "_d" goto:next
if /i "_%~1" equ "_e" goto:next
if /i "_%~1" equ "_f" goto:next
if /i "_%~1" equ "_g" goto:next
if /i "_%~1" equ "_h" goto:next
goto:check

:next
echo %~0
echo %~1
pause
goto:eof

:check
set /p var=Type disk letter without colon:
call "%~dpnx0" "%var%"
goto:eof
Автор: king_stiven
Дата сообщения: 21.01.2010 13:36
rayalex981
ECHO Quit=^1>> qq.prn
Автор: mugil_cephalus
Дата сообщения: 21.01.2010 13:37
rayalex981

Код: (ECHO Quit=1)>>qq.prn
(ECHO CheckAndRepair=0)>>qq.prn
Автор: rayalex981
Дата сообщения: 21.01.2010 13:52
Спасибо огромное! С ECHO Quit=^1>> qq.prn заработало всё!
Автор: mugil_cephalus
Дата сообщения: 21.01.2010 14:15
king_stiven
а сели у rayalex981 значение параметра будет >9 ?

странно, что так экранируется - ECHO Quit=^13>>qq.prn - хотя одним ^ оба символа вместе и потоков всего 9
так не экранируется - ECHO Quit=^1 3>>qq.prn - это понятно
Автор: Kirillhome
Дата сообщения: 21.01.2010 15:53
dima1978

Цитата:

....
А поподробней если можно. Как этот код
....
привязать к архивированию файлов Rar-ом
....

Ещё раз - дело не в коде, дело в Rar-е и обработке им ключей командной строки.
Т.е. Rar (как и WinRar - при указании пароля через ключи) не понимает кавычек в пароле.
Если служба поддержки Rar-а скажет и покажет - как можно (нужно) использовать кавычку в пароле при запуске Rar-а или WinRar-а из командной строки - здесь помогут (на основании этой информации) написать bat-файл, использующий эту возможность.
Автор: Pacho
Дата сообщения: 21.01.2010 18:21
А как использовать кавычку " в качестве разделителя (delims) для команды FOR?
Автор: BorlandIMHO
Дата сообщения: 21.01.2010 18:52
takt03

Цитата:
Не знаю чего так выходит

Я тоже не знаю...
У меня аплоадит.
Попутно найден ещё баг (но это уже скорее баг сервера): буква "я" в названии папки удваивается...
Может, какой баг ОС? Тестировалось на Vista x64...
P.S. Ещё немного подправил код. Попробуйте так... http://forum.ru-board.com/topic.cgi?forum=62&topic=17154&start=2200#3
Автор: Kirillhome
Дата сообщения: 21.01.2010 19:38
Pacho
Из файла - получилось

содержимое файла my_file.txt

Код:
123"456 789"012
234"567 890"123
Автор: Pacho
Дата сообщения: 21.01.2010 21:10
Kirillhome
Спасибо!
Переписал твой пример в таком виде (не люблю метки):

Код: @setlocal enabledelayedexpansion
@echo off
for /f "tokens=*" %%a in (my_file.txt) do (
echo 1:%%a
set "my_full=%%a"
set "my_full=!my_full:"=!"
for /f "tokens=2 delims=" %%b in ("!my_full!") do echo 2:%%b
)
Автор: Kirillhome
Дата сообщения: 21.01.2010 22:17
Pacho

Цитата:
Тока не пойму, для чего вот здесь кавычки?
Вроде и без них работает.

Думал, что спасут от спецсимволов.... Но как то не до конца спасают....


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


Об этом говорим?
[more=Вариант 1]

Код:
@echo off
set First_Start=Bla-Bl
set Second_Start=la-Bla
set First_str=Bla-Bla-Bla
set Second_str=la-Bla-Bla-Bla
set Trid_str=a-Bla-Bla-Bla-Bla
for /f "tokens=*" %%a in ("%First_str%") Do Call :srv %%a
for /f "tokens=*" %%a in ("%Second_str%") Do Call :srv %%a
for /f "tokens=*" %%a in ("%Trid_str%") Do Call :srv %%a
GOTO :EOF

:srv
set nach=%1
set nach=%nach:~0,6%
if /I %nach%==%First_Start% (
echo %1 Match 1
) else (
if /i %nach%==%Second_Start% (
echo %1 Match 2
) else (
echo %1 No match))
goto :EOF
Автор: takt03
Дата сообщения: 22.01.2010 00:09
BorlandIMHO
Баг был у меня в мозгу, после экзаменов ))) Всё работает исправно после небольшой коррекции. Ещё раз Спасибо. Вот Работающий код.
@echo on
chcp 1251
set FTPSERVER=s30.turbobit.ru
set FTPUSER=takt03@mail.ru
set FTPPASSWORD=qwer03
set "FTPFOLDER=/1/"
set "LOCALFOLDER=c:\Program Files\QIP\Users\"
1>"%~dp0ftpscript.tmp" (
echo open %FTPSERVER%
echo %FTPUSER%
echo %FTPPASSWORD%
echo binary
echo literal pasv
)
cd "%Localfolder%" // Вот тут я дописал чтобы в смд открывалась папка иначе прога тупит. Иначе //он сканирует весь мой диск Ц причём странно начинает с документ алл сетинг
for /f "delims=" %%D in ('dir /a:d /b "%LOCALFOLDER%*"') do call

:FLDCHK "%%~dpnxD" "/%%~nxD"
1>>"%~dp0ftpscript.tmp" echo by
ftp -s:"%~dp0ftpscript.tmp"
del %~dp0ftpscript.tmp
goto :EOF
:FLDCPY
1>>"%~dp0ftpscript.tmp" (
echo mkdir "%FTPFOLDER%%~2"
echo cd "%FTPFOLDER%%~2"
echo lcd "%~dpnx1"
)
for /f "delims=" %%A in ('dir /B /A:-D %1') do 1>>"%

~dp0ftpscript.tmp" (
echo put "%%~nxA"
)
for /f "delims=" %%B in ('dir /B /A:D %1') do call :FLDCPY "%~1
\%%~nxB" "%~2/%%~nxB"
goto :EOF
:FLDCHK
pushd "%~1"
for /f "delims=" %%E in ('dir /a:d /b *') do (
if "%%~nxE" == "History" (call :FLDCPY "%%~dpnxE" "%~2/%%

~nxE") else (call :FLDCHK "%%~dpnxE" "%~2/%%~nxE")
)
popd
goto :EOF
exit



ЕЩЁ 1 ВОПРОСИК КАК МОЖНО СДЕЛАТЬ ЧТОБЫ БАТ ЗАПУСКАЛСЯ ХОТЯБЫ СВЁРНУТЫМ тоесть "start /min 1.bat " типа такой команды только в пакетном файле.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778

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


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