@echo off
setlocal enableextensions disabledelayedexpansion
for %%a in (
"C:\Users\Testing\Documents"
"C:\Users\Testing\Downloads"
"C:\Users\Testing\My Pictures"
) do pushd %%a && (
rmdir . /s /q
popd
)
Использование команды for
для просмотра списка папок.Для каждой папки в списке попробуйте изменить активный каталог на текущий элемент в списке (pushd
) и, если это возможно (оператор условного выполнения &&
), удалить что-либо внутри (rmdir . /s /q
) и восстановить предыдущий активный каталог (popd
)
note В предыдущем коде rmdir . /s /q
пытается удалить что-либо внутри папки И самой папки.Папка не может быть удалена, так как мы установили ее в качестве текущего активного каталога с помощью pushd
.Как указано в комментариях dbenham, это означает, что rmdir
покажет сообщение об ошибке, в котором говорится, что папку нельзя удалить, поскольку она используется.Хотя это предполагаемое поведение (защита папки, а не сообщение об ошибке), возможно, желательно скрыть сообщение об ошибке.Это можно сделать, перенаправив поток вывода ошибок (поток 2) на устройство nul
:
...
) do pushd %%a && (
rmdir . /s /q 2>nul
popd
)
Это позволит скрыть любую ошибку (ожидаемую или нет), связанную с командой rmdir
.
Эта техника может быть расширена, чтобы скрыть любую ошибку в предыдущем коде (если вы включите несуществующую папку, pushd
также показывает ошибку).
@echo off
setlocal enableextensions disabledelayedexpansion
2>nul (
for %%a in (
"C:\Users\Testing\Documents"
"C:\Users\Testing\Downloads"
"C:\Users\Testing\My Pictures"
) do pushd %%a && (
rmdir . /s /q
popd
)
)
Или, если вы предпочитаете выборочное сообщение об ошибке (идея dbenham), его можно расширить как:
@echo off
setlocal enableextensions disabledelayedexpansion
for %%a in (
"C:\Users\Testing\Documents"
"C:\Users\Testing\Downloads"
"C:\Users\Testing\My Pictures"
) do ( 2>nul pushd "%%~a" ) && (
rmdir . /s /q 2>&1 | findstr /lb "."
popd
)
, который будет скрывать ошибки в команде pushd
(еслипапка не существует, ее не нужно чистить), и в команде rmdir
будут отображаться ошибки, связанные с любым несъемным элементом, кроме текущего активного каталога.