|
2 / 2 / 0
Регистрация: 20.03.2017
Сообщений: 21
|
|||||||||||
Вернуть путь из скрипта PowerShell в cmd23.12.2023, 11:02. Показов 1566. Ответов 17
Здравствуйте.
Стояла задача при выполнении батника выбора файла из рабочего каталога. Нашёл в интернете решение, и путь вроде возвращается в консоль, но путь обрывается на первом пробеле. Как это побороть? test-ps-file.bat
0
|
|||||||||||
| 23.12.2023, 11:02 | |
|
Ответы с готовыми решениями:
17
Некорректная кодировка в переменных при запуске скрипта Powershell из CMD PowerShell и CMD |
|
bat-пропагандист
|
||||||
| 23.12.2023, 12:51 | ||||||
Сообщение было отмечено Ber Strider как решение
Решение
В цикле for используйте tokens=*, чтобы путь не обрезался:
1
|
||||||
|
6625 / 2256 / 346
Регистрация: 10.12.2013
Сообщений: 7,803
|
||||||||||||||||
| 23.12.2023, 19:23 | ||||||||||||||||
|
первое ( и главное ):
если используется powershell, зачем нужен cmd.exe ? второе ( из спортивного интереса ): вернуть значение из powershell в cmd мне представляется удобным с помощью формирования файла .BAT с результатом или даже с результатами на стороне powershell и вызова его потом с помощью инструкции CALL на стороне cmd вот так:
соответственно, в файл openfiledialog.ps1 следует добавить строчки генератора результата(ов) для текущ. сессии cmd:
и, соответственно кодировка должна быть UTF-8 с BOM для файлов .PS1 и сгенерированного RESULTS.BAT ) чтобы вызвать с помощью CALL RESULTS.BAT в кодировке UTF8 с BOM, следует добавить перед вызовом строку CHCP 65001 вот так:
1
|
||||||||||||||||
|
6625 / 2256 / 346
Регистрация: 10.12.2013
Сообщений: 7,803
|
|
| 24.12.2023, 02:58 | |
|
nekit270,
при работе ОС постоянные и временные файлы плодятся десяткaми тысяч в день, а тут всего-то один и сразу стало не слишком хорошо ? то, что действительно нехорошо, а именно - применение никуда не годного cmd.exe, почему-то возражений не вызывает.
0
|
|
|
2 / 2 / 0
Регистрация: 20.03.2017
Сообщений: 21
|
|||||||
| 24.12.2023, 12:13 [ТС] | |||||||
|
1. Мне необходимо было сделать скрипт, который автоматом объединял все PDF в одной активной папке Total Cоmmander: ярлык на BAT на панель задач TC это делал на раз - щёлк по нему и появляется папка "out", где лежит "out.pdf" со сформированными закладками. 2. Мне необходимо было реализовать нумерацию определённого файла в активной папке TC: снова ярлык на BAT, а вызов PS из BAT помогал выбрать файл в активной папке, а не копировать скрипт в папку выполнения и прописывать всё вручную. И всё это надо распространить на все ПК организации и почти не требует обучения, чего не скажешь про PS скрипт. Его запуск на прямую почему то получается у людей не сразу, не запоминают "как", а BAT выполняется на раз, а с связке с TC даже копировать не надо. Добавлено через 5 минут
0
|
|||||||
|
6625 / 2256 / 346
Регистрация: 10.12.2013
Сообщений: 7,803
|
|
| 24.12.2023, 12:55 | |
|
Ber Strider,
1) механизм реализации ярлыков никак не связан с cmd.exe 2) ярлык можно подвязать к абсолютно любому исполняемому файлу и сам механизм привязки тоже не имеет никакого отношения к cmd.exe. 3) А для запуска powershell-скрипта пощёлкиванием мышки или мяуканьем кошки просто требуется добавить соответств. запись в Registry. 4) Распространение по всем ПК - совсем неудачный пример сравнения возможностей cmd и powershell; в powershell такая возможность заложена. в cmd - нет.
0
|
|
|
2 / 2 / 0
Регистрация: 20.03.2017
Сообщений: 21
|
|
| 24.12.2023, 13:32 [ТС] | |
|
Ваше право. Зачем спорить. Я ничем не стараюсь уменьшить достоинства powershell, он довольно мощный инструмент, но согласитесь, очень уж он требует дополнительных телодвижений, для полноценной работы на ПК пользователя, особенно если массовый пользователь далёк от этого (те же дополнительные записи в Registry).
0
|
|
|
6625 / 2256 / 346
Регистрация: 10.12.2013
Сообщений: 7,803
|
||
| 24.12.2023, 14:23 | ||
|
Ber Strider,
powershell - инструмент автоматизации OS, а автоматизация в свою очередь - это исключение пользователя из процесса производства, в наилучшем случае это полное исключение. повышение мощности инструмента ( то есть, работы в единицу времени ) - это уменьшение количества телодвижений. Именно это определяет качество скриптового языка. Хороший скриптовый язык отбрасывает из кода все незначительное, оставляя только его сущность - части, которые действительно что-то делают. Дерьмовые скриптовые языки, безоговорочным лидером которых является интерпретатор cmd, принуждают пользователя городить нелепые конструкции в качестве обходных вариантов для тех задач, к которым данный язык не приспособлен. А cmd, как я уже говорил, не приспособлен практически ни к чему.
0
|
||
|
bat-пропагандист
|
||||||
| 24.12.2023, 15:03 | ||||||
|
Ber Strider, пробуйте:
1
|
||||||
|
6962 / 2857 / 1099
Регистрация: 06.06.2017
Сообщений: 9,694
|
|
| 24.12.2023, 18:53 | |
|
Ber Strider, а зачем вам вообще понадобился этот диалог в рамках рабочего каталога Тотала? В активной панели список, который можно как угодно фильтровать и выбирать нужное. Диалог-то тут при чём?
0
|
|
|
2 / 2 / 0
Регистрация: 20.03.2017
Сообщений: 21
|
|||||||
| 24.12.2023, 21:57 [ТС] | |||||||
Мы очень много сдаём в госэкспертизу, там всё в pdf, приходиться для удобства ваять такие скрипты. Кстати, тот диалог выбора на powershell иногда глючит. Как то писал скрипт чисто на powershell, там скрипт отрабатывает в 9 случаях из 10, иногда зависает. Не знал, что делать и просто финальную запись со всеми параметрами записывал в отдельный скрипт powershell, и вот он уже выполняется без проблем.
0
|
|||||||
|
6962 / 2857 / 1099
Регистрация: 06.06.2017
Сообщений: 9,694
|
|||
| 24.12.2023, 22:56 | |||
|
1
|
|||
|
2 / 2 / 0
Регистрация: 20.03.2017
Сообщений: 21
|
||
| 25.12.2023, 09:52 [ТС] | ||
|
upd. Прочитал справку, параметр %N действительно был бы полезен. И если писать скрипт чисто под TC, то можно сделать. Если делать более универсально, то надо как то обработать, что скрипт был вызван из TC и если нет, то появлялся диалог выбора. upd2. Про "cmd+powershell" я понимаю, что поженил ежа с бегемотом, т.е. зачем это делать, если всё может сделать один бегемот, а то так ёж послал бегемота посмотреть дорогу, когда тот мог сам всё сделать. И если сделать cmd только под TC, то powershell вообще не нужен. Спасибо всем за правильные советы.
0
|
||
|
6962 / 2857 / 1099
Регистрация: 06.06.2017
Сообщений: 9,694
|
|||||||||
| 25.12.2023, 23:17 | |||||||||
1
|
|||||||||
|
2 / 2 / 0
Регистрация: 20.03.2017
Сообщений: 21
|
||
| 27.12.2023, 10:51 [ТС] | ||
|
0
|
||
|
6962 / 2857 / 1099
Регистрация: 06.06.2017
Сообщений: 9,694
|
|
| 27.12.2023, 11:06 | |
|
Ber Strider, ну вы об этом только сейчас пишите. Это решается просто в рамках предложенного мной кода, и опять же без консоли.
0
|
|
|
6625 / 2256 / 346
Регистрация: 10.12.2013
Сообщений: 7,803
|
|||||||||||||
| 03.06.2024, 15:14 | |||||||||||||
|
( идея-то возникла давным-давно, но не доходили руки, потому что не было социального запроса ) В чистом виде идея нереализуема, потому что папа( вызывающий процесс ) ничего не знает о жизни сына, он просто отдает в сыновний процесс своё окружение и полностью устраняется от его дальнейшей судьбы. После смерти сына безутешному отцу передаётся жалкая весточка о его последних часах в виде скупого системного числа exitcode, который почему-то называется в cmd errorlevel. И в лучшем случае это 0 (ноль), ноль - это успех ( вот так цинично ), а всё остальное считается сыновней ошибкой. Возвращаюсь к грязной идее. 'Грязная идея' такова: перейти от схемы 'Иван Грозный убивает своего сына' к обратной - 'Сын убивает папу Ваню'. Что это даёт? Это ничего бы не дало, но перед тем как убить папу, сын создаёт нового старого папу, после чего убивает старого старого папу, но при этом погибает и сам. Таковы условия игры, ничего не поделать. Так что это даёт ? А даёт вот что: при рождении нового папы к нему переходит всё Окружение сына, в котором уже зашито Окружение старого старого папы плюс всё то, что сын успел натворить за свою коротенькую жизнь. Реинкарнация по сути. Красота же! Соответственно задумке код выглядит так: IVAN.GROZNY.BAT
про которую известно, что она перманентно устанавливает переменные в РЕЕСТРЕ. РЕЕСТР для Windows это системная база данных ( сист. конфиг. файл ) Всё бы здорово, но беда тут в том, что эти переменные никто не увидит в текущей сессии. Увидеть их можно, только в новой сессии. И именно это и было реализовано - новый старый папа увидит и эти изменения РЕЕСТРА, и всё окружение умершего сына ! Итак, в файле IVAN.GROZNY.BAT: строки 1,2 - установка своих переменных строка 3 - вызов сыновнего процесса, который унаследует всё окружение но убьёт отца и себя строки 5-12 - реинкарнация; возобновление исполнения, но уже с новым окружением ( своё старое плюс сыновнее ) Внешне все эти игры престолов будут выглядеть вполне культурно, поскольку новое консольное окно не создаётся ( см. опцию NoNewWindow), ничего не будет заметно. ============================ Все пчёлы прилетали с мёдом, а одна маленькая, вредная - с дёгтем: с практической точки зрения всё вышенаписанное можно смело не использовать, а просто пользоваться powershell вместо cmd - от начала и до конца.
0
|
|||||||||||||
| 03.06.2024, 15:14 | |
|
Помогаю со студенческими работами здесь
18
Как при помощи командной строки узнать путь до файла, и в какой переменной cmd этот путь содержится? CMD to Powershell строкой Windows PowerShell+CMD
В чем отличие powershell от cmd? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|
Фото: Daniel Greenwood
kumehtar 13.11.2025
|
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга,
Ты же видел моря и метели.
Как сменялись короны и стяги,
Как эпохи стрелою летели.
- Этот мир — это крылья и горы,
Снег и пламя, любовь и тревоги,
И бескрайние. . .
|