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

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

Автор: Mark_Titov
Дата сообщения: 13.06.2010 23:19
wolf0425, ты говорил что можешь научить как при измененном размере окна добавлять в консоль полосу прокрутки. Подскажи пож-ста мне на будующее, этого в мануалах нет и в нете не встречал тоже...

Благодарю...
Автор: WesternLight
Дата сообщения: 13.06.2010 23:47

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

ну, wolf0425, молодец! ты телепат да, в этих разборах "почему" я уже совершенно забыл про начало начал - title до chcp, сам себе удивляюсь... кстати, зачем ^ здесь:

Код: for /f "delims=" %%a in ('@"%CD%\reg.exe" query "HKCU\Console" ^| findstr.exe /b /i /r HKEY_CURRENT_USER\\Console\\. ') do "%CD%\reg.exe" delete %%a /f
Автор: wolf0425
Дата сообщения: 14.06.2010 01:14

Цитата:
кстати, зачем ^ здесь:
потому что внутри for ()
Автор: WesternLight
Дата сообщения: 14.06.2010 01:45

Цитата:
потому что внутри for ()

да, я много нового узнал на примере этого кода...
Автор: AkeHayc
Дата сообщения: 14.06.2010 05:58
wolf0425
Пожалуйста подскажите в чем проблема,командой DSADD добавляются контакты, но не в те поля АД. При просмотре контактов в АД после запуска бат-файла, за место емайла стоит телефонный номер и т.д. Вроде должно быть так скрипт просматривает поля файла Cnames.txt занося значение и присваивая каждому полю переменную начиная с %%c до %%n , по алфавиту. Но у меня он не пашет.
С кодировкой разобрался, чет в прошлом посте не разобравшись погнал. На виртуалке забыл поменять в настройках на русский, вот отсюда и начались крякозябры, сорри.

Вот код:

Код: @Echo Off
SETLOCAL

IF NOT EXIST C:\CNames.txt Goto ShowErr
FOR %%R IN (C:\CNames.txt) Do IF %%~zR EQU 0 Goto ShowErr
IF EXIST C:\ContactReport.txt DEL /F /Q C:\ContactReport.txt

SET OUName=OU=ADRESSBOOK,DC=COMPANY,DC=LOCAL

FOR /F "delims=: tokens=1-12" %%c IN (C:\CNames.txt) Do (
Echo Crerating Contact: %%c
DSAdd Contact "CN=%%c,%OUName%" -FN "%%d" -LN "%%e" -Display "%%f" -Email "%%g" -Title "%%h" -mobile "%%i" -office "%%j" -fax "%%k" -hometel "%%l" -dept "%%m" -company "%%n" >>C:\ContactReport.txt
)

Goto EndScript
:ShowErr
Echo "C:\CNames.txt" file does not exist or file is empty!
:EndScript
ENDLOCAL
Автор: ComradG
Дата сообщения: 14.06.2010 10:18
Все-таки хочется вернуться к теме времени еще раз и разжевать что к чему.
time и date имеют фиксированное значение формата H:M:S и D:M:Y, которые не зависят от локали - наличие инвариантной культуры Microsoft для этих тулз не предусмотрела, так что давайте прекратим дискуссии на тему
Цитата:
что значит set time=%time:~0,2%:%time:~3,2%:%time:~-5,2%
и с чем его едят. Вас никто не заставляет использовать именно эту конструкцию, тем более, что время можно обработать и с помощью for:

Код: for /f "tokens="1,2,3 delims=:" %%i in ('time /t') do (
set hour=%%i
set mint=%%j
set secs=%%k
)
Автор: yurkesha
Дата сообщения: 14.06.2010 10:59
ComradG
Все проверяется экспериментом - так ведь?
H = вывод без лидирующих нулей - то есть для значений от 0 до 9 мы получим значения от 0 до 9 - без лидирующих нулей.
HH - два символа всегда - - то есть для значений от 0 до 9 мы получим значения от 00 до 09 - с лидирующими нулями.
Ты бы хотя бы проверил прежде чем ввязываться в спор....

Добавлено:
Так же прошу заметить что ":" не всегда может быть разделителем, как и "." и "/" и "\" и " "...

Добавлено:
И еще замечу что можно динамически, не перезапуская консоль изменить настройки даты/времени и получить совершенно другой вывод даты и времени...
Автор: mugil_cephalus
Дата сообщения: 14.06.2010 11:33
wolf0425

Цитата:
А работает с ним потому, что у for какие-то глюки с двойными кавычками, если с них начинается имя команды внутри (' '). если первая команда начинается с буквы/цифры/@ - она опознается замечательно.


Код: for /f "tokens=*" %%i in ('"%cd%\new\bat.cmd"') do @echo.%%~i
Автор: wolf0425
Дата сообщения: 14.06.2010 11:48

Цитата:
Тут у кого как фантазия работает. Лично я проверял все это как на осях с буржуйской локалью, так и на русской (которую, к слову, в Германии сложно было достать )
ппц ComradG отжигает - в Германии оказывается не продают винды, в которых можно установить американский формат даты, так мы все этому и поверили...

Цитата:
и с чем его едят. Вас никто не заставляет использовать именно эту конструкцию, тем более, что время можно обработать и с помощью for:
Код:
for /f "tokens="1,2,3 delims=:" %%i in ('time /t') do (
set hour=%%i
set mint=%%j
set secs=%%k
)
Тут у кого как фантазия работает.
этот пример говорит что с опытом использования time /t у тебя ещё хуже чем с %date%, только лишь учебники читал.
фантазия лучше всего работает у Микрософта:

узнать батником заранее в каком формате в системе тебе выведут дату/время (если это не твоя личная система, которую ты вправе под себя настроить) - настолько большой гемморой, что когда настройки неизвестны - для получения даты и времени гораздо проще сразу парсить wmic os get LocalDateTime

А выше по странице разобрано, что даже при обычных русских установках времени конструкция
set time1=%time:~0,2%:%time:~3,2%:%time:~-5,2%
может иногда получить в time1 время на ~час меньше чем полученное в предыдущей аналогичной строке
так как событие будет происходить очень редко - то ловить вызванные такой багофичей глюки - весьма веселое занятие.
Интересно что про конструкцию time1=%time:~0,2%:%time:~3,2%:%time:~-5,2% говорит учебник, на который ты ссылаешься.

Добавлено:
mugil_cephalus
Цитата:
for /f "tokens=*" %%i in ('"%cd%\new\bat.cmd"') do @echo.%%~i
у меня такое работает...
такое- работает.
а теперь проверь
Код: for /f "tokens=*" %%i in ('"%cd%\new\bat.cmd" добавим "кавычки"') do @echo.%%~i
Автор: mugil_cephalus
Дата сообщения: 14.06.2010 12:37
wolf0425
так и верно, что не работает - %cd% - не команда
Автор: wolf0425
Дата сообщения: 14.06.2010 12:59

Цитата:
так и верно, что не работает - %cd% - не команда
зато "%cd%\new\bat.cmd" - команда
упростим вопрос:

Код: for /f "tokens=*" %%i in ('"bat.cmd" c параметрами') do @echo.%%~i
for /f "tokens=*" %%i in ('"bat.cmd" c "параметрами"') do @echo.%%~i
for /f "tokens=*" %%i in ('@"bat.cmd" c "параметрами"') do @echo.%%~i
Автор: mugil_cephalus
Дата сообщения: 14.06.2010 13:03
wolf0425

Код: for /f "tokens=*" %%i in ('""%cd%\new\bat.cmd" ^|find /i "g""') do echo.%%~i
Автор: wolf0425
Дата сообщения: 14.06.2010 13:08
mugil_cephalus что ты своим примером сказать то хотел? ты расскажи почему мой не работает.
Или в своем добавь кавычки в командную строку первой команды, а не в пайп.

Добавлено:
хотя работает, да...
Автор: mugil_cephalus
Дата сообщения: 14.06.2010 13:16
wolf0425

Цитата:
почему во втором варианте идет ругань на неправильную команду

не знаю, но если взять в кавычки обе команды, то заработает, попробуй -

Цитата:
for /f "tokens=*" %%i in ('""bat.cmd" c "параметрами""') do @echo.%%~i


Автор: wolf0425
Дата сообщения: 14.06.2010 13:21

Цитата:
то заработает, попробуй -
да я как бы уже попробовал и выше отписался
занятно парсит - под общие кавычки можно вставить скобки '"(echo.)"' но нельзя эти скобки сделать многострочными. А жаль
Автор: WesternLight
Дата сообщения: 14.06.2010 13:53

Цитата:
занятно парсит - под общие кавычки можно вставить скобки '"(echo.)"' но нельзя эти скобки сделать многострочными. А жаль

wolf0425, т.е. в моем примере вот такой вариант?

Код: for /f "delims=" %%a in ('""%CD%\reg.exe" query "HKCU\Console"" ^| findstr.exe /b /i /r HKEY_CURRENT_USER\\Console\\. ') do "%CD%\reg.exe" delete %%a /f
Автор: wolf0425
Дата сообщения: 14.06.2010 14:51
WesternLight получается
кто бы мне ещё объяснил почему
Код: for /f "delims=" %%a in ('""%CD%\reg.exe" query "HKCU\Console" ^| findstr.exe /b /i /r HKEY_CURRENT_USER\\Console\\. "') do echo "%CD%\reg.exe" delete %%a /f
Автор: ComradG
Дата сообщения: 14.06.2010 14:57
wolf0425, yurkesha
Я никогда ни с кем не спорю, тем более, что речь не шла о локалях. Я говорил об ИНВАРИАНТНОЙ КУЛЬТУРЕ. Впрочем, если вы далеки от мира программирования, то не стоит объяснять что это и с чем ее едят. Тем более, что по умолчанию в любой винде принят стандарт XX:XX:XX, так что я не "отжигаю", как вы изволили выразиться батенька, я констатирую факт. И потом, кто на русскоязычном сайте будет писать батник, который бы устанавливал локаль аглицкую, а затем пытался что-то выполнить. Нонсенс, да и только. И потом, что это за дурацкая черта набрасываться всем снопом? Помните у Шварца из обыкновенного чуда: "Если хочешь указать на ошибки - сперва похвали..." Убеждать вас в правоте своих слов о стандартах, еще раз подчеркну, что локаль и стандарт - две разные вещи, как понимаю не имеет смысла, поэтому дабы все мы не превращали форум в обычный флейм, давайте прекратим сии дискуссии и займемся делом, даже если каждый из нас друг друга так и не понял.

Скрипт показывающий версию DirecX (затачивался под XP, так что дорабатывайте что к чему сами):

Код: @echo off
setlocal
set str=Current version of DirectX is
for /f "skip=2 tokens=3,*" %%i in ('reg query hklm\software\microsoft\directx /v version') do (
set ver=%%i
)
if "%ver%"=="4.08.00.0400" (
echo %str% 8.0
) else if "%ver%"=="4.08.01.0810" (
echo %str% 8.1
) else if "%ver%"=="4.08.01.0881" (
echo %str% 8.1
) else if "%ver%"=="4.09.00.0900" (
echo %str% 9.0
) else if "%ver%"=="4.09.00.0901" (
echo %str% 9.0a
) else if "%ver%"=="4.09.00.0902" (
echo %str% 9.0b
) else if "%ver%"=="4.09.00.0904" (
echo %str% 9.0c
)
endlocal
exit /b
Автор: wolf0425
Дата сообщения: 14.06.2010 15:09

Цитата:
Я никогда ни с кем не спорю, тем более, что речь не шла о локалях.
речь шла как раз о локалях - точнее о том, что выполнение конкретного батника от локали зависит.

Цитата:
. Тем более, что по умолчанию в любой винде принят стандарт XX:XX:XX
ну если для вас термин "любая винда" - равноценен "любая русская винда с настройками по умолчанию, точно как у вас" и не включает "американская винда с настройками по умолчанию для американца" - то дальше говорить не о чем.

Цитата:
И потом, кто на русскоязычном сайте будет писать батник, который бы устанавливал локаль аглицкую, а затем пытался что-то выполнить. Нонсенс, да и только.
обычно батник локаль никакую не устанавливает - он должен работать с той локалью, с которой его запустили. Или иметь в описании уточнение что он локалезависим.
Если вам, батенька, кажется, что у всех русскоговорящих - обязательно русская локаль на всех системах на которых они работают, то вы, батенька, глубоко заблуждаетесь.
Американских программистов всего-то за полпоколения в массе удалось научить, что бывают настройки локали отличные от лучшей в мире американской. Осталось научить русских программистов, что разные настройки локали - бывают


Цитата:
Скрипт показывающий версию DirecX (затачивался под XP,
вы, батенька, забыли дописать - а кто этот скрипт у вас просил.
А то ведь человек не найдет, увидев в шапке обращение к wolf0425, yurkesha
Кстати, увидев что ваш скрипт ничего не вывел - человек наверно должен решить что у него DirectX вообще никакой не установлен? или он все же сообразит что программист, писавший скрипт - криворукий, про существование остальных версий DirecX не знающий?
Автор: king_stiven
Дата сообщения: 14.06.2010 18:23
Просто чел из дойчланда не в курсе, что у нас не только русские винды есть, а таже есть жвачка и джинсы.
Автор: ComradG
Дата сообщения: 14.06.2010 18:48
Я лишь в курсе, что едва освоив мышь, всякие волки да короли начинают мнить себя супер-пупсами. После того, как я дословно перевел своим немецким коллегам пост wolf0425 - немцы ржали час . И раз мои скрипты находят бесполезными, то и делать мне в данной ветке больше нечего.

Цитата:
то у нас не только русские винды есть, а таже есть жвачка и джинсы

Это русская ментальность или в России все действительно стало так плохо?
P.S.(Напоследок)Скрипт DirectX рабочий, просто 4.09.00.0904 иногда в системах прописывается как 4.09.0000.0904. Ну а если у тебя просто проблемы, то пора обратиться за квалифицированной помощью.
Ich fahre auf...
Автор: wolf0425
Дата сообщения: 14.06.2010 20:05

Цитата:
P.S.(Напоследок)Скрипт DirectX рабочий
да никто не сомневается.
просто скрипт может запросто ничего не написать несмотря на наличие установленного и рабочего DirectX, проблема очевидна, можно хоть как пример для новичков использовать - как детские ошибки программиста.

Цитата:
иногда в системах прописывается как 4.09.0000.0904.
до тебя так и не дошло, что это далеко не единственный вариант возможной неработы


Цитата:
Ну а если у тебя просто проблемы, то пора обратиться за квалифицированной помощью.
у меня - нет проблем.
неработа скрипта, который из-за очевидной кривизны и не должен работать на тестовой виртуалке - проблемой же не является?
upd:более прикольно что на другой виртуалке, где я тоже думал что работать не будет - оказалось что скрипт таки работает. Версию только пишет несколько не ту что Микрософт, но это не так удивительно...


Цитата:
После того, как я дословно перевел своим немецким коллегам пост wolf0425 - немцы ржали час
если бы ты шведам или финам перевел - они бы ржали два часа
Автор: yurkesha
Дата сообщения: 14.06.2010 21:15
ComradG
Цитата:
тем более, что речь не шла о локалях. Я говорил об ИНВАРИАНТНОЙ КУЛЬТУРЕ. Впрочем, если вы далеки от мира программирования
не опознать маску формата вывода(в вашей ситуации) - куда уж дальше...

wolf0425
Цитата:
если бы ты шведам или финам перевел - они бы ржали два часа
все-таки ты ошибаешься - он также ржали бы час. Но через два часа


Добавлено:
Ну и на всякий случай [more=выдержка из помощи]h = часы, m = минуты, s = секунды

h = 12-часовый формат записи (с AM,PM)
H = 24-часовый формат записи
HH, hh, mm, ss - вывод записей с незначащими лидирующими нулями - то есть всегда два символа
H, h, m, s - вывод записей без незначащих лидирующих нулей - то есть или один или два символа[/more] по записи формата времени.
Автор: mugil_cephalus
Дата сообщения: 15.06.2010 08:26
yurkesha

Цитата:
все-таки ты ошибаешься - он также ржали бы час. Но через два часа



Добавлено:
ComradG

Цитата:
Это русская ментальность или в России все действительно стало так плохо?

да, жевачку и джинсы опять запретили - ты cnn не смотришь?
если серьезно, в россии не бывает плохо - бывают плохие люди, также как и заграницей (без аллюзий)
G. Marshall сделал свое дело...

Цитата:
После того, как я дословно перевел своим немецким коллегам пост wolf0425 - немцы ржали час

а ты их не спросил - над чем они ржали - может они тв в этот момент смотрели, а ты тут со своей распечаткой солировал...
Ja, der Schwierigkeit der ubersetzung...
Автор: king_stiven
Дата сообщения: 15.06.2010 09:20
Правда, лежачего не бьют, но
http://forum.ru-board.com/topic.cgi?forum=5&topic=24422&start=120#12
Автор: mugil_cephalus
Дата сообщения: 15.06.2010 09:23
king_stiven
http://forum.ru-board.com/topic.cgi?forum=5&topic=33080&start=420#15

Цитата:
(простите, если кого обидел, но мне уже были предъявы на одной из прочих ветвей форума).

http://forum.ru-board.com/topic.cgi?forum=62&topic=19668&start=1640#11

Автор: Artem_Butenko, Отправлено: 01:15 29-07-2008 Уважаемый ComradG называть любое стремление к творчеству ерундой, крайне грубо с Вашей стороны. Причем я не первый, кого Вы ненароком задели за живое. А теперь к сути моего предыдущего вопроса.
............................
Автор: ComradG, Отправлено: 22:14 29-07-2008 Цитата: ("и я не в танке!!!!!") Увы, но как раз наоборот. В самой винде даже при отсутсвии определенного скина можно рисовать умопомрачительные интерфейсы как для инсталлеров, так для приложений. Если ты не сталкивался с С++, наверное, с моей стороны это будет литьем воды и рассказывать тебе че к чему, так что хочешь подробностей пиши в личку. Отвечу. Тем более, что уже в сентябре-октябре я выложу свою программку написанную для инно - очень смахивает на визуальную среду разработки с базой данных. Но так как мне все наотрез отказались (исключая Dobrov и Kindly) помогать, то... сам понимаешь.
..................................
Artem_Butenko Цитата: О каких ресурсах ОС (которые можно использовать в качестве скина для Inno) Вы говорите? -- забудь. Просто очередной бред от человека, который плохо знает инно и плохо разбирается в программировании, но считает себя крутым програмером и крутым , ну очень крутым хакером. Конечно, это мое имхо. Но оно имеет под собой вполне реальные основания. А переубедить меня очень просто - достаточно выложить в общий доступ хоть что-то из этих хваленых реализаций для инно.

Автор: Victor_Dobrov, Отправлено: 02:25 30-07-2008 ComradG Цитата: уже в сентябре-октябре я выложу свою программку написанную для инно - очень смахивает на визуальную среду разработки с базой данных. ComradG - Какого года? 2020-го? Обещаниями можете разбрасываться в парламенте, а здесь это не проходит. Кроме того, вы явно не знакомы с правилами форума, так как большинство ваших сообщений не информативны и адресуются неизвестно кому.

http://ruboard.su/Computers/Soft/27438_9.html#
Автор: yurkesha
Дата сообщения: 15.06.2010 12:21
king_stiven
mugil_cephalus

Цитата:
Правда, лежачего не бьют, но

на правах полного - почитал приведенные материалы - навеяло: а разве Нижний Тагил находится в Германии?!
Автор: mugil_cephalus
Дата сообщения: 15.06.2010 12:39
yurkesha
а хоть из берлина, хоть из нижнего тагила, нужно думать прежде чем писать такое

Цитата:
Это русская ментальность или в России все действительно стало так плохо?

p.s.
и если это тезка "нашего" ComradG - я публично извинусь
ладно еще вначале были оценочные характеристики личностные, так теперь пошел шовинизм по социально-групповому признаку
Автор: joker56
Дата сообщения: 15.06.2010 15:36
Подскажите, может уже был такой вопрос, где искать ответ?
На компьютере под WIN XP работает программа и примерно раз в минуту меняет содержимое LOG-файла в папке с известным именем, допустим C:\1, значит меняется и размер этой папки. Командой DIR C:\1 можно поместить эту информацию в текстовый файл, в одной из строк которого находится информация о размере папки. А может нужна не команда DIR, а какая-то другая. Из bat-файла нужно периодически анализировать изменение размера папки и в результате этого осуществлять переход на вызов одного или другого EXE-файла, уже находящих на компьютере. Похоже строк не много, но я практически не владею синтаксисом, может кто-нибудь помочь?
Автор: res2001
Дата сообщения: 15.06.2010 15:45
joker56
какие условия вызова
Цитата:
одного или другого EXE-файла,
?

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132

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


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