Поиск по массиву путей для удаления папок, содержащих строку - Пакет - PullRequest
0 голосов
/ 22 октября 2018

Я хочу искать и удалять папки, содержащие определенную строку в их именах, или удалять все файлы в папке, кроме одной, используя список путей для просмотра.

Вот рабочий пример, без массивапутей:

@echo OFF

set "sources0=%userprofile%\New folder with spaces"
set "sources1=%userprofile%\New folder with spaces 2"
set "folder1_to_delete=[test.com]"
set "folder2_name=My folder"
set "file2_to_keep=My app.lnk"

for /D /R "%sources0%" %%d in ("*%folder1_to_delete%*") do (
    rem RD /S /Q "%%d" >nul
    echo Found1: "%%d"
)
for /D /R "%sources1%" %%d in ("*%folder1_to_delete%*") do (
    rem RD /S /Q "%%d" >nul
    echo Found1: "%%d"
)
for %%i in ("%sources0%\%folder2_name%\*.*") do if not "%%~ni%%~xi" == "%file2_to_keep%" (
    rem DEL /Q "%%i" >nul
    echo Found2: "%%i"
)
for %%i in ("%sources1%\%folder2_name%\*.*") do if not "%%~ni%%~xi" == "%file2_to_keep%" (
    rem DEL /Q "%%i" >nul
    echo Found2: "%%i"
)
pause
exit

Вывод:

Found1: "C:\Users\marin\New folder with spaces\123 [test.com]"
Found1: "C:\Users\marin\New folder with spaces 2\456 [test.com]"
Found2: "C:\Users\marin\New folder with spaces 2\My folder\New file.txt"

Но так как у меня много путей поиска, я хочу перебрать массив или список.Вот то, что я попробовал, но не работает должным образом:

@echo OFF
setlocal enabledelayedexpansion

set "sources[0]=%userprofile%\New folder with spaces"
set "sources[1]=%userprofile%\New folder with spaces 2"
set "folder1_to_delete=[test.com]"
set "folder2_name=My folder"
set "file2_to_keep=My app.lnk"

for /L %%n in (0,1,1) do (
    set "source=!sources[%%n]!"
    for /D /R "!source!" %%d in ("*%folder1_to_delete%*") do (
        rem RD /S /Q "%%d" >nul
        echo Found1: "%%d"
    )
    for %%i in ("!source!\%folder2_name%\*.*") do if not "%%~ni%%~xi" == "%file2_to_keep%" (
        rem DEL /Q "%%i" >nul
        echo Found2: "%%i"
    )
)
pause
exit

Вывод:

Found2: "C:\Users\marin\New folder with spaces 2\My folder\New file.txt"

Есть ли способ добиться того, чего я хочу, и / или есть лилучший способ объявить и перебрать список или массив путей?

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...