Я борюсь с улучшением script, который я предложил в качестве ответа Как написать пакетный файл с указанием пути к исполняемому файлу и версии Python для обработки сценариев Python в Windows? вопрос. Чтобы предотвратить диалоговое окно Open With, я хотел бы прочитать вывод команды ftype
, извлечь путь для
выполнимый из него и проверить, существует ли он.
После этого
@echo off
setlocal EnableDelayedExpansion
rem c:\ftype Python.File ->
rem Python.File="c:\path with spaces, (parentheses) and % signs\python.exe" "%1" %*
for /f "tokens=2 delims==" %%i in ('ftype Python.File') do (
set "reg_entry=%%i"
)
reg_entry's
Содержимое
"c:\path with spaces and (parentheses) and % signs\python.exe" "%1" %*
Как мне разделить это, чтобы получить
"c:\path with spaces, (parentheses) and % signs\python.exe"
, "%1"
и %*
?
ИЗМЕНИТЬ
Я пробовал использовать call
после прочтения ответа Aacini, и он почти работает. Однако он не обрабатывает знак %
.
@echo off
setlocal EnableDelayedExpansion
set input="c:\path with spaces and (parentheses) and %% signs\python.exe" "%%1" %%*
echo !input!
call :first_token output !input!
echo !output!
goto :eof
:first_token
set "%~1=%2"
goto :eof
Выход
"c:\path with spaces and (parentheses) and % signs\python.exe" "%1" %*
"c:\path with spaces and (parentheses) and 1"