Я создаю пакетный файл для удаления всех файлов и папок, кроме папки TEMP
. Я заметил, что буква D параметра /D
отсутствует в выходных данных. Скрипт вроде работает нормально, но интересно, почему его нет.
@echo on
@Y:
REM Following dangerous command commented out for safety - magoo
REM for %%f in (*) do del "%%f"
for /D %%d in (*) do (
if /I not "%%d" == "TEMP" echo "%%d"
)
pause
Выход:
Y:\>for %f in (*) do del "%f"
Y:\>for / %d in (*) do (if /I not "%d" == "TEMP" echo "%d" )
Y:\>(if /I not "TEMP" == "TEMP" echo "TEMP" )
Y:\>(if /I not "test" == "TEMP" echo "test" )
"test"
Y:\>(if /I not "test 2" == "TEMP" echo "test 2" )
"test 2"
Y:\>pause
Я повторяю только для проверки. Я заменю его, наконец, на rd /S /Q
.
echo
, убедитесь, что текущий диск действительно Y: - person Magoo   schedule 17.08.2019Y:
не означает переход в его корневой каталог, фактически для каждого диска существует текущий каталог; вы можете сделатьcd
/D "Y:\" || exit /B 1
, чтобы обязательно перейти в кореньY:
, а также выйти в случае ошибка (например, когдаY:
даже не существует); в качестве альтернативы используйтеpushd
/popd
... - person aschipfl   schedule 17.08.2019Y:
наcd/D "Y:\" || exit /B
и добавлена проверка существования папки TEMP. - person user3315073   schedule 17.08.2019@echo OFF
… - person JosefZ   schedule 17.08.2019/D
с/R
, то будет показана только одна косая черта без буквы. Все формы без/D
отображаются правильно. @JosefZ - известная ошибка? - У вас есть ссылки? Мне было бы любопытно посмотреть, что было сказано. - person dbenham   schedule 18.08.2019FOR /D
функциональность в.bat
/.cmd
с тех пор, как… - person JosefZ   schedule 18.08.2019