Как удалить все файлы в папке и ее подпапках, кроме одного файла с определенным именем в Windows 7 - PullRequest
0 голосов
/ 04 июня 2019

Так что в общем, допустим, у меня есть пример папки, как показано ниже:

C:\
└───Dox
    │   cat.txt
    │   dog.txt
    │   girl.txt
    │   ...
    │
    └───NonDOx
            boy.txt
            girl.txt
            ...

Я хочу, чтобы это выглядело так,

C:\
└───Dox
    │   girl.txt
    │
    └───NonDOx
            girl.txt

Итак, в принципе, все файлыиз папки и подпапки следует удалить, кроме girl.txt, который лежит в случайных папках.Кроме того, в чем разница между папкой и каталогом?Это как каталог - это папка, в которой есть одна или несколько папок или такая же, как папка?

Я не смог найти что-то, что могло бы удалить в подпапках и оставить 1 (конкретный файл).

Ответы [ 2 ]

1 голос
/ 04 июня 2019

Я бы сделал это следующим образом:

rem /* Loop over all items (both files and sub-directories) in the root directory recursively;
rem    then sort them in reverse alphabetic manner, so lower directory hierarchy levels appear
rem    before higher ones and files appear before their parent sub-directories: */
for /F "delims= eol=|" %%F in ('dir /S /B /A "C:\Dox\*.*" ^| sort /R') do (
    rem // Check whether current item is a file (note the trailing `\` to match directories):
    if not exist "%%F\" (
        rem // The current item is a file, hence check its name and delete if not matching:
        if /I not "%%~nxF" == "girl.txt" del "%%F"
    ) else (
        rem // The current item is a sub-directory, hence try to remove it; this only works
        rem    when it is empty; the `2> nul` prefix suppresses potential error messages:
        2> nul rd "%%F"
    )
)
0 голосов
/ 04 июня 2019

Самый простой (и самый безопасный) способ удалить все, кроме ..., - это скопировать только эти файлы в папку резервных копий, удалить весь исходный каталог и поместить файлы резервных копий обратно. Причина, по которой я называю это безопасным, заключается в том, что вы можете проверить в каталоге резервных копий все ли необходимые файлы: (не проверено)

xcopy /S girl.txt <Backup_Directory>\
cd <Backup_Directory>
tree /F //verify if everything is well copied
rmdir <original_directory>
xcopy /S <Backup_Directory>\ <original_directory>\
...