Отредактируйте строку, заменив все символы «&» на другие символы в сценарии .bat - PullRequest
1 голос
/ 02 июля 2019

Я хотел бы отредактировать строку в скрипте .bat, чтобы заменить все символы "&" в ней. Строка будет использоваться как часть пути для команды ffmpeg.

Вот упрощенная версия того, что я пробовал:

1 /

set string=aaa&bbb&ccc
set "string=%string:&=_%"
echo %string%

это дает:

C:\Users\Administrator\Desktop>set string=aaa  & bbb & ccc
'bbb' is not recognized as an internal or external command,
operable program or batch file.
'ccc' is not recognized as an internal or external command,
operable program or batch file.

2 /

set string="aaa&bbb&ccc"
set "string=%string:&=_%"
echo %string%

это дает правильный результат, но с ", который позже вызывает проблемы с командой ffmpeg:

"aaa_bbb_ccc"

Я в принципе хочу получить второй результат, но без ".

Я не хочу использовать PowerShell. Пользовательская библиотека в порядке. Любые предложения будут оценены.

(отредактировано для более подробной информации)

1 Ответ

1 голос
/ 02 июля 2019

Ваша проблема - обработка переменных.

Первая проблема у вас set string=aaa&bbb&ccc.
Это не может работать, потому что & будет обрабатываться как разделитель команд.

echo %string% завершается неудачно, когда в вашей строке есть &.
Если вы расширяете переменную с помощью пакета, то содержимое будет по-прежнему анализироваться на наличие специальных символов.

Для решения этих проблем вы можете использовать расширенный синтаксис SET.
И задержка расширения для доступа к контенту

setlocal EnableDelayedExpansion
set "string=aaa&bbb&ccc"
echo Before: !string!
set "string=!string:&=_!"
echo After: !string!
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...