1

Я видел вопрос " Как удалить деревья каталогов через консоль в Windows 7?«Хотел бы сделать то же самое со следующими исключениями:

  • Каталог существует на внешнем диске.
  • Путь к каталогу содержит пробел в строке.
  • Я определенно хочу это в командном файле, а не в командной строке.

Так что для меня я имею дело с:

del /s /f /q p:\group_share\my share\*.*
for /f %%f in ('dir /ad /b p:\group_share\my share\') do rd /s /q p:\group_share\my share\%f

Очевидно, я мог бы поместить его в переменную:

set FULL_PATH="p:\group_share\my share\"

Затем:

del /s /f /q %FULL_PATH%*.*
for /f %%f in ('dir /ad /b %FULL_PATH%') do rd /s /q %FULL_PATH%%f

Я попытался добавить кавычки вокруг% FULL_PATH% ergo: "% FULL_PATH" ... но я получаю это:

The system cannot find the file specified.

Кстати, первая строка работает, если я вставлю: p:\group_share\my share\ с кавычками:

 del /s /f /q "p:\group_share\my share\"*.*

Кто-нибудь может дать мне предложение или что-то попробовать? Я пробовал все виды перестановок кавычек, без кавычек и т.д. Спасибо Geo

1 ответ1

1

Вы, кажется, делаете это излишне сложным - все, что вам нужно, это:-

pushd %FULL_PATH%
rd /s /q .
popd

Перемещаясь в целевой каталог, вы защищаете my share от удаления. Обратите внимание, что cd и pushd не нуждаются в кавычках, так как они принимают только один аргумент.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .