С Новым годом! Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
 Аватар для vavun
10593 / 5556 / 864
Регистрация: 07.04.2013
Сообщений: 15,660

Как выполнить назначение и преобразование части переменной "t=%t:.exe=.UNP%" в одну строку вида cmd /c * ?

27.03.2016, 19:59. Показов 1981. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую !

Так работает
Windows Batch file
1
2
3
set "t=123.exe"
set "t=%t:.exe=.UNP%"
echo %t%
Так - нет.

Windows Batch file
cmd /c set "t=123.exe" & set "t=%t:.exe=.UNP%" & echo %t%
Как быть ?
Надо именно в одну строку, так как это будет твик реестра, если получится.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.03.2016, 19:59
Ответы с готовыми решениями:

Объединение команд в одну строку; CMD & bash.exe
cd C:\tools\cygwin\bin\ & bash.exe & cd /cygdrive/c Первая команда переход в директорию к файлу bash.exe, вторая команда запуск...

Как присвоить переменной строку выведенную в CMD
Пример ввожу в CMD wmic diskdrive get size он выдаст Size 200039632128 128034708480 как мне присвоить каждой строчке...

UNP*.dll/exe
Что за содержимое хранится в "C:\Windows\System32\UNP" и зачем оно так активно просится в интернет?

13
 Аватар для ZoOoO
226 / 211 / 70
Регистрация: 09.02.2016
Сообщений: 1,040
27.03.2016, 20:05
а если просто переименовать расширение с помощью команды ren
0
 Аватар для vavun
10593 / 5556 / 864
Регистрация: 07.04.2013
Сообщений: 15,660
27.03.2016, 20:08  [ТС]
А мне не нужно менять расширение.
Мне нужно создать папку на основе имени передаваемого файла.

Если на входе %t% будет "D:\Desktop\prog.exe" то на выходе мне нужно "D:\Desktop\prog.UNP"
0
Покинул форум
3700 / 1483 / 355
Регистрация: 07.05.2015
Сообщений: 2,903
27.03.2016, 20:24
Лучший ответ Сообщение было отмечено vavun как решение

Решение

Windows Batch file
1
cmd /c for /f %%i in ("123.exe") do @echo %%~dpni.UPN
1
 Аватар для vavun
10593 / 5556 / 864
Регистрация: 07.04.2013
Сообщений: 15,660
27.03.2016, 20:33  [ТС]
Ах если бы все было так просто.
%1 тут это не тот %1, что бывает при передаче в качестве аргумента пакетному файлу. Он так не преобразуется

Добавлено через 3 минуты
Беру свои слова обратно, не разобрался с количеством % с ходу.

работает
0
Покинул форум
3700 / 1483 / 355
Регистрация: 07.05.2015
Сообщений: 2,903
27.03.2016, 20:37
Windows Batch file
1
cmd /v/c "set "t=123.exe"&set "t=!t:.exe=.UPN!"&echo:!t!"
1
 Аватар для vavun
10593 / 5556 / 864
Регистрация: 07.04.2013
Сообщений: 15,660
27.03.2016, 20:41  [ТС]
greg zakharov, а почему у меня не получилось ? Я тоже пробовал /v и !t:.exe=.UPN!
0
 Аватар для ComSpec
3462 / 2000 / 635
Регистрация: 26.02.2014
Сообщений: 1,457
27.03.2016, 21:26
Лучший ответ Сообщение было отмечено vavun как решение

Решение

vavun, если запускать из Командной строки, то так (без излишних кавычек):
Code
1
cmd /v /c set "t=1&2&3.exe"^& set t=!t:.exe=.UNP!^& echo.!t!
.

Если запускать из окна "Выполнить" (и, возможно, и в качестве значения параметра в реестре), то так:
Code
1
cmd /v /k set "t=1&2&3.exe"& set t=!t:.exe=.UNP!& echo.!t!
(также без излишних кавычек и без ^).

Я специально "обозвал" приложение 1&2&3.exe, чтобы показать устойчивость таких конструкций к специальным символам.

Если будешь пробовать использовать вторую команду как значение параметра реестра, то замени /k на /c.
2
 Аватар для vavun
10593 / 5556 / 864
Регистрация: 07.04.2013
Сообщений: 15,660
27.03.2016, 21:33  [ТС]
ComSpec, мне понравился первый вариант greg zakharov.
Без издевательства над переменной

Цитата Сообщение от ComSpec Посмотреть сообщение
чтобы показать устойчивость таких конструкций к специальным символам
Но такой же устойчивостью, к сожалению, похвастаться не может
Можно ли добиться той же устойчивости, как вы говорите, но с использованием for ?
0
 Аватар для vavun
10593 / 5556 / 864
Регистрация: 07.04.2013
Сообщений: 15,660
27.03.2016, 21:40  [ТС]
ComSpec, вот такой твик получился на основе вашего cmd /c*
Code
1
2
3
4
5
6
7
Windows Registry Editor Version 5.00
 
[HKEY_CLASSES_ROOT\exefile\shell\InnoUnp]
@="Unpack Inno setup file"
 
[HKEY_CLASSES_ROOT\exefile\shell\InnoUnp\command]
@="cmd /d /v /c \"set \"t=%1\"& set t=!t:.exe=.UNP!& innounp -x -a -d\"!t!\" -m \"%1\"\""
Испытание на файле с именем 1 $&.exe

Результат работы
Название: coms.PNG
Просмотров: 26

Размер: 5.3 Кб



И вот такой, на основе cmd /c* от greg zakharov:
Code
1
2
3
4
5
6
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\exefile\shell\InnoUnp]
@="Unpack Inno setup file"
 
[HKEY_CLASSES_ROOT\exefile\shell\InnoUnp\command]
@="cmd /d /c \"for /f %%i in (\"%1\") do innounp -x -a -d\"%%~dpni.UPN\" -m \"%1\"\""
Результат
Название: greg.PNG
Просмотров: 26

Размер: 4.9 Кб



1:0 в пользу хозяев поля

(вот тузла если кому интересно)
https://sourceforge.net/projects/innounp/
0
 Аватар для vavun
10593 / 5556 / 864
Регистрация: 07.04.2013
Сообщений: 15,660
27.03.2016, 21:44  [ТС]
С файлом 1 $&%^.exe не справился никто
0
 Аватар для ComSpec
3462 / 2000 / 635
Регистрация: 26.02.2014
Сообщений: 1,457
27.03.2016, 22:43
vavun, проверяй (и именно на файле 1 $&%^.exe):

Code
1
2
3
4
5
6
7
Windows Registry Editor Version 5.00
 
[HKEY_CLASSES_ROOT\exefile\shell\InnoUnp]
@="Unpack Inno setup file"
 
[HKEY_CLASSES_ROOT\exefile\shell\InnoUnp\command]
@="cmd /d /v /c set \"x=%1\"& set t=!x:.exe=.UNP!& innounp -x -a -d\"!t!\" -m \"!x!\""
;

Code
1
2
3
4
5
6
7
Windows Registry Editor Version 5.00
 
[HKEY_CLASSES_ROOT\exefile\shell\InnoUnp]
@="Unpack Inno setup file"
 
[HKEY_CLASSES_ROOT\exefile\shell\InnoUnp\command]
@="cmd /d /c for /f \"delims=\" %i in ("%1") do @innounp -x -a -d\"%~dpni.UPN\" -m \"%1\""
.
1
 Аватар для vavun
10593 / 5556 / 864
Регистрация: 07.04.2013
Сообщений: 15,660
27.03.2016, 22:50  [ТС]
Ни один не справился с 1 $&%^.exe

Добавлено через 1 минуту
А ё-моё, сейчас эхо уберу

Добавлено через 59 секунд
Оба работают

Добавлено через 35 секунд
А какой надежне то ? )
0
 Аватар для ComSpec
3462 / 2000 / 635
Регистрация: 26.02.2014
Сообщений: 1,457
27.03.2016, 23:13
Цитата Сообщение от vavun Посмотреть сообщение
А ё-моё, сейчас эхо уберу


Ага, я его как раз уже и убрал из кодов в сообщении.




Цитата Сообщение от vavun Посмотреть сообщение
А какой надежне то ? )


Пока для обоих кодов существует "презумпция невиновности".

Интересно, что с файлами, начинающимися на амперсанд (например, &123.exe), не справляются многие команды Командой строки и даже некоторые (не помню какие) серьёзные программы, а эти коды (проверял с echo) с такими файлами работают.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.03.2016, 23:13
Помогаю со студенческими работами здесь

Получить путь до .exe и выполнить cmd команду
Нужный мне .ехе лежит по D:\MyGames\Warface\Bin64Release\Game.exe Ну у всех разные пути путь до D:\MyGames\ .можно получить через ...

Запустить cmd.exe и выполнить через него команду
Здравствуйте, нужна помощь. Хочу сделать батник который запускал бы консоль при входе в windows и выполнял одну команду и закрывался. Сразу...

Каким образом можно запустить cmd.exe и выполнить в ней некоторые команды?
Всем привет! Каким образом можно в c# запустить cmd.exe и выполнить в ней некоторые команды?

Преобразование части массива в строку
Уважаемые программисты, я чайник тот еще. Появилась задача по обработке массива, который представляет из себя файл из большого количества...

Соединить в одну строку части из двух.
Даны целые положительные числа N1 и N2 и строки S1 и S2. Получить из этих строк новую строку, содержащую первые N1 символов строки S1 и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru