правильный способ удалить двойные кавычки из строки в пакете - PullRequest
0 голосов
/ 02 мая 2019

У меня есть пакетный скрипт (app1.bat), вызывающий другой пакетный скрипт (app2.bat), который сам вызывает программу в windows (program.exe).

app2.bat вызывает program.exe с параметром после флага следующим образом:

program.exe -f Parameter with whitespaces coming into the program 

Я хочу передать фразу app.exe из app1.bat в app2.bat, но я не знаю, как правильно обрабатывать двойные кавычки.В настоящее время я передаю фразу из app1.bat в app2.bat в двойных кавычках, а внутри app2.bat (до выполнения program.exe) я избавляюсь от таких кавычек:

внутри app1.bat

call app2.bat "Parameter with whitespaces coming into the program"

внутри app2.bat

    set old_phrase=%1%
    set new_phrase=%old_phrase:"=%
    program.exe -f %new_phrase% 

старая_фраза равна

"Parameter with whitespaces coming into the program"

, а новая_фраза, которой я заканчиваю, равна

Parameter with whitespaces coming into the program 

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

1 Ответ

2 голосов
/ 02 мая 2019

Когда вы выполните call /? из cmd, чтобы запустить справку, вы увидите довольно много вокруг расширения %n Первый гласит:

%~1         - expands %1 removing any surrounding quotes (")

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

program.exe -f %~1
...