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

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

Автор: YuS_two
Дата сообщения: 11.09.2016 18:47
GCRaistlin

Цитата:
какого размера куча переменных у вас вылезает по 'set p'.

Если ответ был не совсем понятен: Там было продолжение мысли, что все ваши предположения о существовании в путях & в кавычках, имеют право на существование не более, чем предположение, что переменных начинающихся на p может быть и сто, и тысяча и более... а сколько их у меня - неважно. Если это важно для Вас, то скажите прежде, много ли у Вас путей с "&" в кавычках?


Цитата:
но его "замечательности" этот ваш пример

Если вам это неинтересно, то зачем вступать в дискуссию?


Цитата:


Цитата: имеет значение только передача данных в переменную по конвееру и использование этих данных, так или иначе...


В соревнованиях по забиванию гвоздей микроскопом тоже имеет значение только инструмент.
Автор: GCRaistlin
Дата сообщения: 11.09.2016 19:04
YuS_two

Цитата:
много ли у Вас путей с "&" в кавычках?

Ни одного.

Цитата:
Если вам это неинтересно, то зачем вступать в дискуссию?

В какую дискуссию? Вы сказали, что ключик замечательный, и привели пример. Я - по умолчанию - предположил, что в примере демонстрируется какой-то уникальный или как минимум полезный прием, и, каюсь, не проверил, так ли это. Оказалось - нет.

Цитата:
Ну, т.е. по существу, показать Вам нечего?

Мне не интересен прием ради приема. Возникает задача - я ищу решение, при наличии нескольких - выберу наиболее эффективное, удобное, читаемое. Впихивание кучи спецсимволов в одну строку и запуск новой копии интерпретатора - не признак ни того, ни другого, ни третьего. Соответственно, такое решение меня не интересует. Поэтому - да, мне показать нечего.
Автор: YuS_two
Дата сообщения: 12.09.2016 05:16
GCRaistlin

Цитата:
Ни одного.

А у меня 13 переменных, начинающихся на "p", но это ведь не показатель того, что их не может быть больше, правда?


Цитата:
В какую дискуссию?

Да, действительно, получился разговор слепого с глухонемым. Вернее, битье головой апстену - только теперь непонятно, зачем я это делал... ну да ладно, это уже мои проблемы.
В моих постах не было заявок на истину в последней инстанции и на какую-либо уникальность, всего лишь попытки показать, что ключ можно использовать, хоть и необязательно только его.
Увы, часто люди с приобретением какого-либо объема знаний, одновременно приобретают иллюзию всезнайства и присутствия на крыше мира, поэтому перестают считать дискуссией всё, что не укладывается в их собственные рамки (да как они вообще посмели возражать!)... соответственно, переубеждать их в чем-либо, чаще всего, бывает просто бессмысленно...


Цитата:
Впихивание кучи спецсимволов в одну строку и запуск новой копии интерпретатора - не признак ни того, ни другого, ни третьего. Соответственно, такое решение меня не интересует. Поэтому - да, мне показать нечего.

Это не объяснение, это роспись в собственном бессилии перед поставленной задачей. Какие рамки и искусственные заборы этому мешают - вообще неважно.
В вопросе было:

Цитата:
необходимо передать значение в переменную по конвееру - как бы Вы сделали это?

В ответ - что угодно, но не его решение...
Автор: GCRaistlin
Дата сообщения: 12.09.2016 10:50
YuS_two

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

Да нет, я просто перечитываю сейчас нашу дискуссию по поводу того, как лучше ознакомиться с содержимым PATH, и не могу понять, в каком месте я вступил в другую дискуссию - по поводу замечательности ключа /v. Я вообще-то всего лишь упомянул, что мне ни разу до сих пор им пользоваться не приходилось. Все остальное взяли на себя вы.

Цитата:
переубеждать их в чем-либо... бывает просто бессмысленно

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

Цитата:
роспись в собственном бессилии перед поставленной задачей

Вы путаете понятие задачи и приема.
Кстати, раз уж вы настаиваете, то передача значения в переменную по конвейеру не требует использования 'cmd /v/c':

Код:
@echo off
set a=
echo|(set /p a=&if^
defined a echo b)
Автор: YuS_two
Дата сообщения: 12.09.2016 13:30
GCRaistlin

Цитата:
в каком месте я вступил в другую дискуссию

А в том самом:

Цитата:
Командой cmd-то да, а вот ключом /v к ней мне лично до сей поры ни разу не приходилось.

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


Цитата:
Вы путаете понятие задачи и приема.

Я ничего не путаю, это только ваше предположение...
Пример этот часто используется в коде и довольно успешно, но не вижу смысла приводить этот код...
Смысл в том, чтобы получить переменную по конвееру и использовать её, а не просто получить как факт. Вот тут у вас что:

Код: @echo off
set a=
echo|(set /p a=&if^
defined a echo b)
Автор: GCRaistlin
Дата сообщения: 12.09.2016 14:14
YuS_two

Цитата:
А в том самом

И где в процитированном вы нашли вступление в дискуссию?

Цитата:
Смысл в том, чтобы получить переменную по конвееру и использовать её

Изначально задача как звучала?

Цитата:
необходимо передать значение в переменную по конвееру

А теперь оказывается, что надо еще и показать ее значение. То есть это как бы вами подразумевается. Ну так а мною подразумевается, что у любого стоящего приема должен быть смысл применимости. В вашем приеме смысл, однако, есть - если вы пишете универсальный скрипт, которые должен работать и в NT4. Но тогда в нем не должно быть использования Command Extensions вообще. В прочих случаях рационального оправдания использования этого громоздкого, ненаглядного, тормозного приема с ограничением времени жизни полученных переменных я лично не вижу.

Цитата:
Получено значение в переменную, а вывод почему-то непонятно чего

Вывод 'b' означает, что переменная установлена, а ведь во второй строке мы ее стирали. И это не умозрительный прием - переменные-флаги как раз очень удобны, т. к. внутри одной строки их можно установить и затем обратиться к ним по 'if defined' без включения delayed expansion - быстро, лаконично, наглядно.

Цитата:
он и есть ссзб с зашоренным сознанием и собственным частоколом ограничений

Давайте подойдем к вопросу с другой стороны. Какие у вас критерии качественности кода? Я предлагаю - в порядке убывания значимости - отказоустойчивость, скорость, наглядность, объем. Вы задаете задачу, которую решаете с помощью 'cmd /v/c'. Я предложу свое решение. Потом сравним по указанным критериям. По результатам определим, у кого зашоренность и частокол.
Автор: YuS_two
Дата сообщения: 12.09.2016 15:33
GCRaistlin

Цитата:
И где в процитированном вы нашли вступление в дискуссию?


Цитата:
А теперь оказывается, что надо еще и показать ее значение.


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


В таком ключе вести разговор мне поднадоело... занимайтесь самолюбованием в одиночестве, плиз
Автор: GCRaistlin
Дата сообщения: 12.09.2016 15:42
YuS_two

Цитата:
В таком ключе вести разговор мне поднадоело... занимайтесь самолюбованием в одиночестве, плиз


Цитата:
роспись в собственном бессилии перед поставленной задачей
Автор: Linksach
Дата сообщения: 12.09.2016 18:59
Раз был разговор про переменные ,тогда у меня вопрос такого плана.Есть две программки.Одна -это батник,скомпилированый в exe,другая это-текстовый файл.Одна без другой работать не может,точнее первая без второй.Т.е батник,скомпилированный в exe берёт данные из текстового файла и выводит эту инфу в окне cmd что в текст файле и потом выполняет определённую задачу.
Есть такой код:

Код:
@echo off
setlocal
echo Enter a num of program that need to launch.
echo 1 - EmEditor.exe
echo 2 - WinRar.exe
echo 3 - FreeArc.exe
echo 4 - Up1.exe
echo 5 - AP_list.txt
set /p act=""
if /i %act% equ 1 goto:first
if /i %act% equ 2 goto:second
if /i %act% equ 3 goto:third
if /i %act% equ 4 goto:fourth
if /i %act% equ 5 goto:fifth
:first
EmEditor.exe
goto:eof
:second
WinRar.exe
goto:eof
:third
FreeArc.exe
:fourth
Up1.exe
goto:eof
:fifth
AP_list.txt
goto:eof
endlocal
exit /b
Автор: Jon_Dow
Дата сообщения: 12.09.2016 20:10
Linksach
В начало скомпилированного скрипта добавь
Код: ECHO "%CD%"
pause
Автор: Linksach
Дата сообщения: 12.09.2016 20:21
Jon_Dow

Так работает.Благодарю!
Я вас прекрасно понял-надо было просто положить батник с этим кодом в папку где лежат Up1.exe и AP_list.txt

А так сделать чтоб батник лежал например на рабочем столе а Up1.exe и AP_list.txt там где сейчас лежат ,т.е в другом месте -нельзя?

Всё догадался-надо было создать ярлык и поместить на рабочий стол!!!
Автор: Jon_Dow
Дата сообщения: 12.09.2016 20:31
Linksach
ну собственно к тому и шло, но я имел виду все-таки то, что в начале надо глянуть текущий путь, а там уже будет видно... А так в том же QBFC или ExeScript можно ресурсные файлы вкомпилить вместе со сценарием в одно тело.
Это бывает важно при запуске с UNC-пути(по сети без смонтированного дискка).
Автор: Linksach
Дата сообщения: 12.09.2016 20:34

Цитата:
но я имел виду все-таки то, что в начале надо глянуть текущий путь, а там уже будет видно...

ПУТИ не совпадали если надо вам это знать.Сейчас это уже на важно

А можно ли как-то эту программу назовём её Vybor.bat( я ЕЁ конечно скомпилирую обязательно в exe) запускать в скрытом режиме ,т.е чтобы её не было видно на рабочем столе,а нажал например на определённую клавишу и запустил
Нужно как-то наверное привязать к клавише.Если можно напишите код .Сам я пока не сделаю такое
Автор: Jon_Dow
Дата сообщения: 12.09.2016 22:03
Linksach
без сторонних средств максимум что ты можешь сделать это запускать элемент видимый с рабего стола(ярлык рабочего стола или одной из панелей задач) через "Быстрый вызов" - там назначаются клавиши вида CTRL+ALT+<key>
А в общей ситуации надо подбирать резидентный ланчер с добавочной настройкой сочетаний клавиш.
А по поводу "hidden" я имел в виду что скрипт можно скомпилировать для запуска без отображения окна консоли...
Автор: Linksach
Дата сообщения: 12.09.2016 22:34
Jon_Dow

а какие сторонние средства могут быть-речь о дополнительных программах



Цитата:
А по поводу "hidden" я имел в виду что скрипт можно скомпилировать для запуска без отображения окна консоли...


Без отображения окна консоли-это vbs-скрипт должен быть вроде бы

Автор: Jon_Dow
Дата сообщения: 12.09.2016 23:04
Linksach
ну не знаю даже - что-то типа MKey. Я сам такой софт не применяю - поэтому не подскажу.

Цитата:
Без отображения окна консоли-это vbs-скрипт должен быть вроде бы
можно и так, но если уже все расно применяется компилер скрипта в exe то можно(как минимум на QBFC и ExeScript) в параметрах компиляции указать скрытый режим.
Автор: Linksach
Дата сообщения: 12.09.2016 23:10
Jon_Dow

Цитата:
можно и так, но если уже все расно применяется компилер скрипта в exe то можно(как минимум на QBFC и ExeScript) в параметрах компиляции указать скрытый режим


Да и мне наоборот надо чтобы было окно.В нём батник должен произвести определённые действия,и я должен не только это видеть но и участвовать в этом.Мне наоборот нужно скрыть от посторонних глаз не окно cmd,а сам батник или батник,скомпилированный в exe(т.е уже получается файл exe).Если удасться скрыть сам батник тогда и не надо будет и компилировать в exe

Добавлено:
Jon_Dow

Не знаю,нашёл в инете какую-то прогу.Называется S-Tools .Буду разбираться,ведь это уже тема не о батниках
Автор: king_stiven
Дата сообщения: 12.09.2016 23:37
Linksach

Цитата:
нужно скрыть от посторонних глаз не окно cmd,а сам батни

Сам батник, как файл, скрыть не получится. Он будет создаваться в папке %temp%, и удалится только по окончания его работы.


Цитата:
батник,скомпилированный в exe(т.е уже получается файл exe

Присвоить ему атрибут скрытый? Переименовать расширение .exe в .txt? Прибавить ему пару байтов в конце и перед запуском отрезать? Это уже что-то из хакерства, не сталкивался.
Автор: Linksach
Дата сообщения: 13.09.2016 00:06
king_stiven

Цитата:
Сам батник, как файл, скрыть не получится. Он будет создаваться в папке %temp%, и удалится только по окончания его работы


Да не важно где он будет создаваться -главное чтоб его не было видно на рабочем столе или посторонний человек не мог понять что например картинка .jpg - это батник
Автор: king_stiven
Дата сообщения: 13.09.2016 00:19

Цитата:
главное чтоб его не было видно на рабочем столе

Ярлык создавать необязательно на рабочем столе, создай в другом месте, в свойствах ярлыка пропиши горячие клавиши, вот и всё.
Автор: Linksach
Дата сообщения: 13.09.2016 06:50
king_stiven

Как это сделать-у меня не редактируется колонка Быстрый вызов

Всё-разобрался вроде!Попробую что получится

Создал ярлык в папке не на рабочем столе ,прописал горячую клавишу.Но с той папки не запускается,

Получилось только в меню ПУСК(как пишут в инете) создать папку и туда кинуть ярлык с назначенной клавишей.Благодарю-это то что мне и надо было!

Страницы: 123456789101112131415161718

Предыдущая тема: Не устанавливаются обои на рабочий стол (Windows 2003 x64)


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