Пакет: пропустить папку, если она содержит определенную строку - PullRequest
0 голосов
/ 10 июня 2018

Я пытаюсь создать пакетный скрипт, который перемещает папки в каталоге в другую папку в том же каталоге.Однако я хочу пропустить папки, которые начинаются с «FILES-» (остальная часть имени папки состоит из случайных символов).

Это то, что у меня до сих пор:

echo #### moving folders into newly created folder...
for /D %%D in ("C:\Users\reite\Downloads\*.*") do (
        if /I not "%%~nxD"=="FILES" (
        move "%%~D" "C:\Users\reite\Downloads\%datestamp%"
    )
)

Как бы я решил эту проблему?

Ответы [ 2 ]

0 голосов
/ 10 июня 2018

Я бы сделал что-то с findstr / b, а не с for:

echo #### moving folders into newly created folder...
for /D %%D in ("%userprofile%\Downloads\*") do (
        echo/%%~nxD|findstr /I /B "FILES-">nul||move "%%~D" "%userprofile%\Downloads\%datestamp%"
)
0 голосов
/ 10 июня 2018

Как насчет этого:

echo #### moving folders into newly created folder...
for /D %%D in ("C:\Users\reite\Downloads\*.*") do (
    for /F "delims=- eol=-" %%N in ("_%%~nxD") do (
        if /I not "%%N"=="FILES" (
            move "%%~D" "C:\Users\reite\Downloads\%datestamp%"
        )
    )
)

Команда for /F разделяет имя папки на - символов.Ведущий _ предназначен для того, чтобы избежать ложных совпадений, таких как --FILES-*, и не пропускать папки, такие как ---.

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