Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Ветеран


Contributor


Сообщения: 2708
Благодарности: 1684

Профиль | Отправить PM | Цитировать


whitejoy,
Цитата whitejoy:
я думал, по моему коду это видно »
я не читатель, я писатель .
не сложно, пояснить назначение конструкции "^|Sort /R
Что делает Dir? Выдаёт список папок, например,
dir Z:\Box_In\ /s /a:D /B
Код: Выделить весь код
Z:\Box_In\001
Z:\Box_In\001\002
Z:\Box_In\001\002\003
Z:\Box_In\001\002\003\004
Z:\Box_In\001\002\003\004\005
Z:\Box_In\001\002\003\004\005\006
Допустим, ни в одной папке файлов нет
Что делает Rd "папка"? Пытается удалить "папка", попытка будет успешна, если "папка" пустая, иначе ошибка.
Что произойдет, если сделать в приведенном примере Rd "Z:\Box_In\001"? Папка удалена не будет, так как она не пустая - есть подпапки.
Аналогично Rd "Z:\Box_In\001\002" .... Rd "Z:\Box_In\001\......005"
Если в For ставим Dir в таком виде, то удалится только последняя пустая папка цепочки
Z:\Box_In\001\002\003\004\005\006,
так как все предыдущие папки, выданные Dir непустые.
Команда Sort /R в данном контексте позволяет отсортировать вывод команды Dir в обратном алфавитном порядке, то есть,
dir Z:\Box_In\ /s /a:D /B |sort /R
Код: Выделить весь код
Z:\Box_In\001\002\003\004\005\006
Z:\Box_In\001\002\003\004\005
Z:\Box_In\001\002\003\004
Z:\Box_In\001\002\003
Z:\Box_In\001\002
Z:\Box_In\001
И здесь Rd уже последовательно удаляет реально пустые подпапки, начиная с самого нижнего уровня.
Шляпа ^ в For надо для так называемого экранирования служебного символа | перенаправления вывода команды Dir на вход команды Sort для корректной работы For, в простой командной строке она не нужна

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 30-06-2020 в 10:38.


Отправлено: 10:26, 30-06-2020 | #8