获取具有特定前缀的子目录

Get subdirectories with specific prefix

我正在创建简单的批处理脚本来删除特定应用程序的所有用户配置,但我在最后一步尝试获取具有特定前缀的所有子文件夹时仍然失败...

这是我现在拥有的:

@echo off
chcp 1250

SET appUserConfigDirectory=\AppData\Local\CompanyName
SET appConfigFolderPrefix=AppName.exe_Url

:: get parent folder of user folders
for %%d in (%USERPROFILE%) do SET userprofilesFolder=%%~dpd

SETLOCAL ENABLEDELAYEDEXPANSION
:: going through all user folders
for /F "delims=" %%d in ('dir %userprofilesFolder% /A:D-R-H-S /b') do (
    :: set full name of CompanyName folder in user AppData
    SET appConfigParentFolder=%userprofilesFolder%%%d%appUserConfigDirectory%
    IF EXIST !appConfigParentFolder! (
        :: There is a problem with dir command, it's says File not found even if subfolder with this prefix exists and print all subFolder no metter it's name...
        for /F "delims=" %%i in ('dir !appConfigParentFolder! /A:D /b %appConfigFolderPrefix%*') do (
        echo %%i)))

请尝试这样的事情:

forfiles /S /M !appConfigParentFolder! /C "cmd /c if @isdir==TRUE rmdir @path"

它删除每个子目录,等于 !appConfigParentFolder!

我找到方法了。带前缀的正确目录命令应该是:

dir !appConfigParentFolder!\%appConfigFolderPrefix%* /A:D /b

所以这个样本的完整版本是:

@echo off
chcp 1250

SET appUserConfigDirectory=\AppData\Local\CompanyName
SET appConfigFolderPrefix=AppName.exe_Url

for %%d in (%USERPROFILE%) do SET userprofilesFolder=%%~dpd

SETLOCAL ENABLEDELAYEDEXPANSION

for /F "delims=" %%d in ('dir %userprofilesFolder% /A:D-R-H-S /b') do (
    SET appConfigParentFolder=%userprofilesFolder%%%d%appUserConfigDirectory%
    IF EXIST !appConfigParentFolder! (
        for /F "delims=" %%i in ('dir !appConfigParentFolder!\%appConfigFolderPrefix%* /A:D /b') do echo %%i
    )
)