Я хотів би додати зауваження до вищезазначених рішень:
Усі ці синтаксиси чудово працюють, ЯКЩО ВАША КОМАНДА ЗНАЙДАЄТЬСЯ ВІД ПАРТИ, АКОЛЬ КОМАНДА - це шлях без БЕЗ ПРОСТОРІВ І СПЕЦІАЛЬНИХ ХАРАКТЕРІВ.
Але якщо ви спробуєте скористатися виконуваною командою, розташованою в папці, шлях якої містить спеціальні символи, то вам потрібно буде скласти ваш командний шлях у подвійні лапки ("), і тоді синтаксис FOR / F не працює.
Приклади:
$ for /f "tokens=* USEBACKQ" %f in (
`""F:\GLW7\Distrib\System\Shells and scripting\f2ko.de\folderbrowse.exe"" Hello '"F:\GLW7\Distrib\System\Shells and scripting"'`
) do echo %f
The filename, directory name, or volume label syntax is incorrect.
або
$ for /f "tokens=* USEBACKQ" %f in (
`"F:\GLW7\Distrib\System\Shells and scripting\f2ko.de\folderbrowse.exe" "Hello World" "F:\GLW7\Distrib\System\Shells and scripting"`
) do echo %f
'F:\GLW7\Distrib\System\Shells' is not recognized as an internal or external command, operable program or batch file.
або
`$ for /f "tokens=* USEBACKQ" %f in (
`""F:\GLW7\Distrib\System\Shells and scripting\f2ko.de\folderbrowse.exe"" "Hello World" "F:\GLW7\Distrib\System\Shells and scripting"`
) do echo %f
'"F:\GLW7\Distrib\System\Shells and scripting\f2ko.de\folderbrowse.exe"" "Hello' is not recognized as an internal or external command, operable program or batch file.
У цьому випадку єдине рішення, яке я знайшов використовувати команду та зберігати її результат у змінній, - це встановити (тимчасово) каталог за замовчуванням для тієї самої команди:
pushd "%~d0%~p0"
FOR /F "tokens=* USEBACKQ" %%F IN (
`FOLDERBROWSE "Hello world!" "F:\GLW7\Distrib\System\Layouts (print,display...)"`
) DO (SET MyFolder=%%F)
popd
echo My selected folder: %MyFolder%
Потім результат правильний:
My selected folder: F:\GLW7\Distrib\System\OS install, recovery, VM\
Press any key to continue . . .
Звичайно, у наведеному вище прикладі я припускаю, що мій пакетний скрипт розміщений у тій же папці, що і моя виконувана команда, щоб я міг використовувати синтаксис "% ~ d0% ~ p0". Якщо це не ваш випадок, то вам доведеться знайти спосіб знайти ваш командний шлях та змінити каталог за замовчуванням на його шлях.
Примітка: Для тих, хто цікавиться, тут використовується команда зразка (для вибору папки) FOLDERBROWSE.EXE. Я знайшов це на веб-сайті f2ko.de ( http://f2ko.de/en/cmd.php ).
Якщо у когось є краще рішення для таких команд, доступних через складний шлях, я буду дуже радий почути це.
Жиль