windows пакетный скрипт: удалить все не PDF-файлы в каталоге - PullRequest
0 голосов
/ 24 января 2020

Я пытаюсь написать пакетный скрипт, который удаляет все не PDF-файлы из каталога. Имя каталога: OUTPUT /

это то, что я получил

FOR /f %%f IN (.\OUTPUT) DO 
   SET fileName=%%f
    IF NOT "!fileName:~-3!"=="pdf" (
       DEL !fileName!
    ) 

1 Ответ

1 голос
/ 24 января 2020

Хотя ваш вопрос состоит в том, что вы просто не используете правильный синтаксис в своей команде for, я отметил и другие замечания, которые я решил, что будет лучше в качестве ответа.

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

Чтобы сделать это так, как вы, она должна выглядеть примерно так:

@Echo Off
SetLocal DisableDelayedExpansion
For %%G In (Output\*) Do (
    Set "fileName=%%G"
    SetLocal EnableDelayedExpansion
    If /I Not "!fileName:~-4!"==".pdf" (
        Del /F "!fileName!"
    )
    EndLocal
)


Все эти пакетные файлы должны делать то же самое.

Стандарт для l oop:

@For %%G In (Output\*)Do @If /I Not "%~xG"==".pdf" Del /F "%%G"


Использование варианта for /f:
@For /F "Delims=" %%G In ('Dir /B/A-D-S-L "Output" 2^>NUL^|FindStr /VILE ".pdf"')Do @Del /F "Output\%%G"

или через несколько строк, если вам легче читать:

@Echo Off
For /F "Delims=" %%G In (
    'Dir /B/A-D-S-L "Output" 2^>NUL^|FindStr /VILE ".pdf"'
) Do (
    Del /F "Output\%%G"
)



Пожалуйста, помните, что почти каждая команда windows cli имеет встроенную справку, и подавляющее большинство принимает вариант /?, например, for /?, del /?. Кроме того, вы можете использовать команду help, например, help dir, help findstr.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...