Если несколько условий - PullRequest
0 голосов
/ 05 июля 2019

F.e. на рабочем столе пользователя есть какая-то папка. Я хочу удалить любые файлы в этой папке, кроме ярлыков. Существует два типа ярлыков - для некоторых локальных \ сетевых ресурсов и ярлыки для некоторых сайтов.

«ярлыки на некоторых локальных \ сетевых ресурсах» имеют расширение .lnk

"ярлыки для некоторых сайтов" имеют расширение .url

Я уже нашел как выполнить эту задачу отдельно

forfiles /p "%userprofile%\Desktop\folder" /s /m *.* /c "cmd /c for %G in (@path) do @if /I [%~xG] neq [.lnk] del /F /Q %G"

и

forfiles /p "%userprofile%\Desktop\folder" /s /m *.* /c "cmd /c for %G in (@path) do @if /I [%~xG] neq [.url] del /F /Q %G"

Но как объединить эти условия в одну строку? Что-то вроде if /I [%~xG] neq [.lnk] AND [.lnk] ...

1 Ответ

2 голосов
/ 05 июля 2019

Абсолютно нет необходимости использовать в вашей команде /C.

Попробуйте либо;

ForFiles /P "%UserProfile%\Desktop\folder" /S /C "Cmd /C If /I Not @ext==\"lnk\" If /I Not @ext==\"url\" Del /A /F @path"

Или используйте шестнадцатеричные коды, как показано в справочной информации, доступной в командной строке, введя, forfiles /?

ForFiles /P "%UserProfile%\Desktop\folder" /S /C "Cmd /C If /I Not @ext==0x22lnk0x22 If /I Not @ext==0x22url0x22" Del /A /F @path"
...