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

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

Автор: wolf0425
Дата сообщения: 25.02.2010 10:17

Цитата:
на практике rar.exe спотыкался на "
а это даже не спецсимвол
а давно " не спецсимвол?
сможешь например создать и выполнить файлик ".cmd ?


Добавлено:

Цитата:
а ограничение на длину строки не действует при "трубопроводе"?
у меня строка в коде - 873 символа с учетом pipeline'ov
я стараюсь следить чтоб строки батника были не длинней 500 (небольшой запас от 510), на чем точно поимел когда-то там проблемы - уже не помню.

Автор: Ykidia
Дата сообщения: 25.02.2010 13:36
mugil_cephalus
Пока не нашел, как снять атрибут индексирования с файла и, соответственно, со всех имеющихся файлов на выбранном диске. Есть какие-нибудь мысли?
Автор: graydevil
Дата сообщения: 25.02.2010 14:22
Нужна помошь, интересная задача -

Есть файл 0.img, в нем внутри куча DJPG файлов.

Можно ли их извлечь из 0.img каждый в отдельный jpg файл ,

если я знаю что каждый файл внутри начинаеться с - 12 байт инфо разное + текст далее "DJPEG".
Автор: mugil_cephalus
Дата сообщения: 25.02.2010 15:58
wolf0425

Цитата:
а давно " не спецсимвол?


Цитата:
текст в кавычках не содержит никаких специальных символов (например: &<>( ) @ ^ |)
ms-its:ntcmds.chm::/Cmd.htm
то же у станека


Цитата:
сможешь например создать и выполнить файлик ".cmd ?

не пробовал, так как с 2003 года имею идиосинкразию на пробелы и кириллицу в нейминге

Цитата:
я стараюсь следить чтоб строки батника были не длинней 500 (небольшой запас от 510), на чем точно поимел когда-то там проблемы - уже не помню.

вот меня и удивило, что, маленький вульгарный тест-код со строкой в 873 символа валиден

Код: @echo off
:loop
(echo %time%)>>hd 2>&1
tasklist /nh|find /i /v "system"|find /i /v "smss"|find /i /v "csrss"|find /i /v "winlogon"|find /i /v "services"|find /i /v "lsass"|find /i /v "ati2evxx"|find /i /v "svchost"|find /i /v "CCSETMGR"|find /i /v "CCEVTMGR"|find /i /v "ati2evxx"|find /i /v "spoolsv"|find /i /v "explorer"|find /i /v "CCPROXY"|find /i /v "SOUNDMAN"|find /i /v "mdm"|find /i /v "NAVAPSVC"|find /i /v "MBM5"|find /i /v "SNDSrvc"|find /i /v "NOPDB"|find /i /v "hpwuSchd"|find /i /v "hpotdd01"|find /i /v "symlcsvc"|find /i /v "CLI"|find /i /v "UPServ"|find /i /v "SymWSC"|find /i /v "CCAPP"|find /i /v "CALMAIN"|find /i /v "AcctMgr"|find /i /v "ctfmon"|find /i /v "ps"|find /i /v "UPS"|find /i /v "everest"|find /i /v "wmiprvse"|find /i /v "SAVSCAN"|find /i /v "alg"|find /i /v "wuauclt"|find /i /v "taskmgr"|find /i /v "cmd"|find /i /v "wmiprvse"|find /i /v "tasklist"|find /i /v "find">>hd 2>&1
(echo %time%)>>con 2>&1
goto:loop
Автор: wolf0425
Дата сообщения: 25.02.2010 17:40

Цитата:
packagebin.exe --recursive-search=yes --files-mask=exe,dll,pdb,obj ^
--archive-type=zip --archive-level=max --deliver-method=ftp ^
--deliver-target=ftp://ftp.site.com
не сработало
я скорее поверю что у тебя пробел после какого-то ^ чем в то что не сработало из-за длины строки.



Цитата:
текст в кавычках не содержит никаких специальных символов (например: &<>( ) @ ^ |)
тебя послать смотреть в словаре смысл слова "например"? на тему полноты этого перечисления?


Цитата:
но для cli - это спецсимволы (и придется экранировать)
ну и чего ты хотел от рара - чтоб он справлялся с " без экранировки?
по правилам cli - начиная с непарной " и до следующей или до конца строки - это все один слитный блок, невзирая на пробелы, т.е. рар правильно понимает что ему подсовывают пароль с пробелом - p"Rx0#nwU5cd sample.rar и виноват тут не консольный рар, а гуевый - не ругнувшись на такой пароль.
а : никогда не требовало никакой экранировки в батниках.
Автор: mugil_cephalus
Дата сообщения: 25.02.2010 19:55
wolf0425

Цитата:
я скорее поверю что у тебя пробел после какого-то ^ чем в то что не сработало из-за длины строки.

пробела точно не было - я код всегда проверяю на пробелы конца строк. код ругался: find. недопустимый символ.
но это не важно. меня удивило обратная ситуация - работоспособность такого длинного кода
Цитата:
вот меня и удивило, что, маленький вульгарный тест-код со строкой в 873 символа валиден


спецсимвол - это символ, наткнувшись на который cmd.exe выдаст спецреакцию (такой вот рекурсивный каламбур)
напрмер, * и ? - экранировать не нужно, но заименовать файл name*?name.ext - ось не даст



Код: echo %~f0
echo %1
echo %2
echo %3
pause
Автор: infopolis
Дата сообщения: 25.02.2010 21:37

Цитата:
echo C:\PROGRA~1\WINRAR\RAR.EXE a -y -ep1 -m5 -ed -r proga %dirsrc% > tmp\crea_rar.cmd

dirsrc=D:\program\DrWeb\*.* - не работает
dirsrc=\program\DrWeb\*.* - работает

Двоеточие в значениях переменных запрещено?


Цитата:
думаю, rar.exe "спотыкается" на ":"

не rar спотыкается , а в создаваемом файле tmp\crea_rar.cmd строка получалась такая:
C:\PROGRA~1\WINRAR\RAR.EXE a -y -ep1 -m5 -ed -r proga
то есть переменная dirsrc как бы обнулялась. А если из пути убрать двоеточие - все передавалось нормально.

Упустил один нюанс. И случайно обнаружил, как появляется глюк. Дело в том, что батник с этой раровской строкой выполнялся из другого батника. Перенес все в основной, чтоб не было вложенных вызовов - и опа! - все стало нормально!

Надо бы это наверное в шапку занести - может не только на двоеточии глюк...


Добавлено:
Как определить имя каталога (не полный путь а только каталога) , в котором находится запущенный командный файл?
Автор: wolf0425
Дата сообщения: 26.02.2010 01:51

Цитата:
Упустил один нюанс. И случайно обнаружил, как появляется глюк. Дело в том, что батник с этой раровской строкой выполнялся из другого батника.
а можно пример этих двух батников, в которых ты нашел зависимость передачи переменной от ее содержания - в студию?
Автор: infopolis
Дата сообщения: 26.02.2010 07:16
файлы уже переделал, но было примерно так:
main.cmd
Код: call cmd1.cmd
call cmd2.cmd
Автор: wolf0425
Дата сообщения: 26.02.2010 09:14

Цитата:
файлы уже переделал, но было примерно так:
set %proga=drweb
set %dirsrc=d:\program\drweb\*.*
примерно так - оно и не должно работать, % там лишний.
А без него - никаких проблем не вижу.
Автор: king_stiven
Дата сообщения: 26.02.2010 10:52
infopolis

Цитата:
Как определить имя каталога (не полный путь а только каталога) , в котором находится запущенный командный файл?

%~dp0
Автор: mugil_cephalus
Дата сообщения: 26.02.2010 11:27
wolf0425
детерминировал источник аберрации, - в памяти мнемонизировался первый когнитивный опыт, как говориться, по праву первой ночи; кто является прототипом этой пертурбации (станек и/или переводчик) - не знаю. но хорошо, что ошибка была тобой обнаружена - "например" :

Цитата:
тебя послать смотреть в словаре смысл слова "например"? на тему полноты этого перечисления?

Автор: infopolis
Дата сообщения: 26.02.2010 11:38

Цитата:
%~dp0

d:\program\drweb\drweb.cmd
искомое выделено

mugil_cephalus жжош


Цитата:
примерно так - оно и не должно работать, % там лишний.
А без него - никаких проблем не вижу.

Ну да - Акела промахнулся Но % не влияет...
В ключах архиватора еще было -x@%%1\rar.x
Полчаса сейчас экспериментировал - повторить эффект не могу. Абыдна.
Автор: mugil_cephalus
Дата сообщения: 26.02.2010 11:53
wolf0425

Цитата:
ну и чего ты хотел от рара - чтоб он справлялся с " без экранировки?
по правилам cli - начиная с непарной " и до следующей или до конца строки - это все один слитный блок, невзирая на пробелы,

это то понятно, вопрос - как экранировать или шунтировать (эскейп не помогает)
то есть, если в пароле (или в другом ключе) будет char " , например, как у заказчика

Цитата:
RaR x -ad -pp"Rx0#nwU5cd sample.rar
то клиево это не передашь?
---------------

Цитата:
начиная с непарной " и до следующей

семантику этого фразеологизма вообще не пойму: "следующая" автоматически становится парой "предыдущей", которая, в свою очередь, из непарной становится - парной.
в смысле, - "следующей", - локализованной в другом ключе? тогда это распознается только через символы ключа: / или -
-------------------
возможно, есть только одна фича от Kirillhome http://forum.ru-board.com/topic.cgi?forum=62&topic=17154&start=2280#7 но она годна только для парсинга внутри батника
Автор: Pacho
Дата сообщения: 26.02.2010 13:03
graydevil

Цитата:
Можно ли их извлечь из 0.img каждый в отдельный jpg файл ,
если я знаю что каждый файл внутри начинаеться с - 12 байт инфо разное + текст далее "DJPEG".

Можно сделать на VBScript.


А как проверить запущен ли процесс:
Код: Путь\Файл.exe
Автор: vlad777 ok
Дата сообщения: 26.02.2010 13:47
Приветствую всех. Прошу не посылать в гугл
Заморочка, наверное, простейшая: есть каталог с файлами, файлы нужно копировать по сети. Когда сетевой путь недоступен, нужно прервать выполнение.
Сейчас вот так:
erase \\192.168.1.3\distrib\NOD32update /q /f
xcopy G:\NOD32update \\192.168.1.3\distrib\NOD32update /d
А как нужно?
Заранее благодарен!
Автор: infopolis
Дата сообщения: 26.02.2010 15:23
попробуй так

if not exist \\192.168.1.3\distrib\NOD32update\nul goto end
erase \\192.168.1.3\distrib\NOD32update /q /f
xcopy G:\NOD32update \\192.168.1.3\distrib\NOD32update /d
:end
Автор: wolf0425
Дата сообщения: 26.02.2010 15:56

Цитата:
семантику этого фразеологизма вообще не пойму: "следующая" автоматически становится парой "предыдущей", которая, в свою очередь, из непарной становится - парной.
уговорил. не от непарной а от нечетной.

Цитата:
в смысле, - "следующей", - локализованной в другом ключе? тогда это распознается только через символы ключа: / или -
символом разделения аргументов в cli являются пробел и табуляция (не находящиеся внутри пары ""), а / и - это части аргументов, сбокубантики.


Цитата:
RaR x -ad -pp"Rx0#nwU5cd sample.rar
то клиево это не передашь?
Если rar не позволит вписать ключ пароля последним в строку и не согласится взять пароль из stdin - то никак

vlad777 ok

Цитата:
Когда сетевой путь недоступен, нужно прервать выполнение.
Сейчас вот так:
erase \\192.168.1.3
например вписать выше
ping 192.168.1.3 || goto :eof


Автор: mugil_cephalus
Дата сообщения: 26.02.2010 16:29
wolf0425

Цитата:
уговорил. не от непарной а от нечетной.

не из сутяжнеческого мотива, а из скрупулезного искательства
не просто нечетной, а нечетной стоящей последовательно-последней в строке
то есть, если после нечетного символа " (допустим, у всех предшествовавших n-символов " была сопоставленная пара) в строке нет ни одной " , - в этом случае
Цитата:
до конца строки - это все один слитный блок, невзирая на пробелы,


Цитата:
Если rar не позволит вписать ключ пароля последним в строку и не согласится взять пароль из stdin - то никак

я архивирую гуево, специально тестить на этот предмет rar.exe не собираюсь и тебя не прошу, но в анналах твоей практики подобные экзерсисы не встречались?
Автор: vov4ka
Дата сообщения: 26.02.2010 18:27
mugil_cephalus, ссылка битая,но ничего,сам в инете найду.Спасибо большое!
Автор: king_stiven
Дата сообщения: 26.02.2010 20:08
infopolis
for %%i in ("%cd%") do echo %%~nxi
Автор: wolf0425
Дата сообщения: 27.02.2010 00:46

Цитата:
не из сутяжнеческого мотива, а из скрупулезного искательства
не просто нечетной, а нечетной стоящей последовательно-последней в строке
то есть, если после нечетного символа " (допустим, у всех предшествовавших n-символов " была сопоставленная пара) в строке нет ни одной " , - в этом случае
да, с концом строки аргумент автоматом заканчивается, и такая непарность не считается ошибкой.

Цитата:
я архивирую гуево, специально тестить на этот предмет rar.exe не собираюсь и тебя не прошу, но в анналах твоей практики подобные экзерсисы не встречались?
да вроде нет. попробовал придумать как загнать одиночную кавычку в аргументN - ничего кроме засовывания ее в последний аргумент не придумалось, экранировка " вроде не предусмотрена.
А через перенаправление передать пароль - надо потестировать при случае, там вроде всем пофигу любые спецсимволы. другой вопрос - умеет ли это rar.




Автор: vlad777 ok
Дата сообщения: 27.02.2010 05:46
wolf0425, спасибо! Нормально работает. Еще скомпилил с помощью Quick Batch File Compiler - совсем здорово получилось.
Автор: mugil_cephalus
Дата сообщения: 27.02.2010 12:07
vov4ka

Цитата:
mugil_cephalus, ссылка битая,но ничего,сам в инете найду.Спасибо большое!

этого не может быть потому что:
1) сам только что ее проверил
2) она взята из шапки - http://forum.ru-board.com/topic.cgi?forum=5&topic=29819&start=0
3) уже сотни скачек были - никто не жаловался
p.s.
в ПМ отправил Уильям Станек - Командная строка Microsoft Windows в формате *.chm (на english'e )

Добавлено:
wolf0425
для визуализации своей сентенции "закодировал" свою мысль:

Код: echo %~f0
echo %1
echo %2
@REM 3rd quote without pair
echo %3
pause
Автор: GRom V
Дата сообщения: 28.02.2010 10:00
Ктонить подскажите в командной строке (Винда7) пишу:

schtasks /create /tn run /tr "C:\Program Files\Total Commander\Utilites\Opera\opera.exe" /sc ONCE /st 19:13 /ru user /rp pass

Задача не выполняется: ошибка 2147942402
Автор: 01MDM
Дата сообщения: 28.02.2010 10:22
GRom V
Убери /ru и /rp
Автор: GRom V
Дата сообщения: 28.02.2010 13:10

01MDM

Цитата:
GRom V
Убери /ru и /rp

И с какой стати это убрать???
Тогда ошибка:
Неправильный параметр или аргумент - user
Автор: V2driver
Дата сообщения: 28.02.2010 13:43
Вобщем нужно реализовать такой батник - по массовому переименовыванию файлов...
Поясню: вобщем имеется папка а вней wav файлы, но у них перед названием есть номер.. тоесть вот пример.
1 EN_TUT_EVENT2_NEW_01_PC.wav
2 RU_TAK_ACHIEVE4_02C.wav
3 RU_TOD_ACHIEVE2_02B.wav
4 RU_CLY_GOESTOLAST_01C.wav
И так у меня доходит нумерация до 2138.
Как видно нумерация идёт по порядку на название кажого файла разная..
Мне нужен такой батник который бы убалял номер перед названием!!!
Тоесть чтобы получилось так:
EN_TUT_EVENT2_NEW_01_PC.wav
RU_TAK_ACHIEVE4_02C.wav
RU_TOD_ACHIEVE2_02B.wav
RU_CLY_GOESTOLAST_01C.wav
Помогите пожалуйста, яя уже незнаю где копать, пол инета перерыл((
Спасибо
Автор: 01MDM
Дата сообщения: 28.02.2010 14:59
GRom V
Убери эти параметры (/ru и /rp):

Код:
schtasks /create /tn run /tr "C:\Program Files\Total Commander\Utilites\Opera\opera.exe" /sc ONCE /st 19:13
Автор: Myster
Дата сообщения: 28.02.2010 16:39
V2driver

for /f "usebackq delims=" %%f in ( `dir /S /B /A-D ".\*.wav"` ) do (
for /f "tokens=2* delims= " %%i in ( "%%~nxf" ) do (
ren "%%f" "%%i"
)
)

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132

Предыдущая тема: XP не видит второй раздел на съемном USB-HDD


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