Вы можете сделать это, чтобы поймать ответы , так как они всегда представляют собой один символ, окруженный двойными кавычками, , тогда вы можете использовать их по мере необходимости
for /F delims^=^"^ Tokens^=2^,4 %A IN ('takeown /? ^| FIndStr /R /C:" """[A-Z]""" "') DO @( ECHO.Take: "%~A" Skip: "%~B" )
Для ваших нужд вы можете просто использовать:
for /F delims^=^"^ Tokens^=2 %%A IN ('TakeOwn /?') DO @( TakeOwn /f "c:\cygwin" /r /d %%A )
Для более подробной разбивки:
for /F delims^=^"^ Tokens^=2^,4 %%A IN (
'takeown /?
^|
FIndStr /R /C:" """[A-Z]""" "
') DO (
SET "_TakeOwn_YES=%%~A"
SET "_TakeOwn_NO=%%~B"
)
takeown /d %_TakeOwn_YES%
Я заметил некоторые отзывы о том, что Takeown не был локализован, так что, к сожалению, автор этого поста также предположил, что CHOICE
всегда будет локализован в посте немного раньше, поэтому мы можем просто использовать это.
Я поиграл с Choice
, используя методы, которые часто используются с DATE
и SET /P
, и обнаружил, что было легко определить утвердительный и отрицательный варианты для использования с TakeOwn или любым другим локализованным выбором.
Ниже тянет оба Ответа и показывает их
FOR /F "Tokens=1-2 Delims=[,]" %A IN ('
echo.^|choice 2^>NUL
') DO @(
ECHO.Affirmative: "%~A" Negative: "%~B"
)
Для ваших нужд вы можете просто использовать:
FOR /F "Tokens=1 Delims=[," %%A IN ('echo.^|choice 2^>NUL') DO @( TakeOwn /f "c:\cygwin" /r /d %%A )
Надеюсь, что это полезно:)
Похоже, Стефан ответил методом, подобным тому, который был основан на предложении ОП о выборе, когда я писал это и перепостил что-то, что заметил, что я открыл в другом окне, Nicely Done @Stephan:)