Windows 使用某些变量删除带有通配符的文件夹

Windows 使用某些变量删除带有通配符的文件夹,windows,batch-file,command-prompt,Windows,Batch File,Command Prompt,在Windows中,当我想用通配符删除几个类似的目录时,我会使用以下命令删除它们: 示例文件夹: c:\Users\user\folder\ test1 test2 personalinfo 使用通配符删除文件夹的命令示例: for /d %x in ("c:\Users\User\folder\test*") do rd /s /q "%x" or forfiles /P c:\Users\User\folder /M test* /C "cmd /c if @isdir=

在Windows中,当我想用通配符删除几个类似的目录时,我会使用以下命令删除它们:

示例文件夹:

c:\Users\user\folder\
   test1
   test2
   personalinfo
使用通配符删除文件夹的命令示例:

for /d %x in ("c:\Users\User\folder\test*") do rd /s /q "%x"
or
forfiles /P c:\Users\User\folder /M test* /C "cmd /c if @isdir==TRUE rmdir /s /q @file"
结果:

c:\Users\User\folder\
   personalinfo
但不适用于%HOMEPATH%变量

for /d %x in ("%HOMEPATH%\folder\test*") do rd /s /q "%x"
or
forfiles /P %HOMEPATH%\folder /M test* /C "cmd /c if @isdir==TRUE rmdir /s /q @file"
但是使用%APPDATA%或%HOMEDRIVE%\Users\User\etc时,效果很好。。。非常罕见:

c:\Users\user\AppData\Roaming\folder\
   test1
   test2
   personalinfo

for /d %x in ("%APPDATA%\folder\test*") do rd /s /q "%x"
or
forfiles /P %APPDATA%\folder /M test* /C "cmd /c if @isdir==TRUE rmdir /s /q @file"

 c:\Users\user\AppData\Roaming\folder\
   personalinfo
注意:在Win7中进行测试。我不确定在Windows8/10中是否会发生同样的事情


我怎样才能解决这个问题?提前感谢

为您的任务找到合适的环境变量,您可以在cmd窗口中发出,路径因其长度而被排除:

> set |find /i "%USERNAME%"|find /i /V "Path"

APPDATA=C:\Users\UserName\AppData\Roaming
LOCALAPPDATA=C:\Users\UserName\AppData\Local
OneDrive=C:\Users\UserName\OneDrive
TEMP=C:\Users\UserName\AppData\Local\Temp
TMP=C:\Users\UserName\AppData\Local\Temp
USERNAME=UserName
USERPROFILE=C:\Users\UserName
但请注意,某些特殊文件夹可能会重新定位到其他驱动器/文件夹。 您需要一个vb-/Jscript或PowerShell来评估这些位置

在PowerShell提示符下:

PS> [environment]::getfolderpath("mydocuments")
C:\Users\LotPings\Documents
要枚举特殊文件夹名称,请执行以下操作:

PS> [Environment+SpecialFolder]::GetNames([Environment+SpecialFolder])
并将所有特殊文件夹解析为其当前值:

[Environment+SpecialFolder]::GetNames(
    [Environment+SpecialFolder])| Sort-Object | ForEach-Object{
       "{0,22} {1}" -f $_,[Environment]::GetFolderPath($_)}

告诉我当您执行echo%homepath%echo%homepath%\Users\UserUse%USERPROFILE%操作时得到的结果通常是组合的%homeprive%%homepath%,因为已经通知%homeprive%%homepath%应该可以工作,或者如果您当前的驱动器是%homeprive%,您可以尝试\%homepath%。%USERPROFILE%只是一个可能的替代方案,虽然它可能适用于您,但不一定返回相同的位置,也不一定能从技术上解决您的问题。顺便说一句,根据目标操作系统的年龄,%APPDATA%也可能解析为users\APPDATA\Roaming位置USERPROFILE%是Windows中的默认主目录,即文档等特殊文件夹的默认位置。%HOMEDRIVE%%HOMEPATH%通常位于同一位置,但它可能不同,甚至可能不正确,例如,对于计划任务或runas.exe,它可能是%SystemRoot%\System32。也就是说,可以通过策略重新定位特殊文件夹,同时设置自定义主目录。在这种情况下,根据您的需要,%HOMEDRIVE%%HOMEPATH%可能是正确的位置。不幸的是,CMD没有提供获取特殊文件夹位置的方法。PowerShell有。如果用户有%HOMEDRIVE%%HOMEPATH%的自定义主目录,则可能不包括用户名。例如,它可以是一个映射驱动器,如Z:\。特殊文件夹可以按策略重新定位到那里。但我会使用PowerShell将个人文件夹的位置作为主目录。
AdminTools             C:\Users\LotPings\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Administrative Tools
ApplicationData        C:\Users\LotPings\AppData\Roaming
CDBurning              C:\Users\LotPings\AppData\Local\Microsoft\Windows\Burn\Burn
CommonAdminTools       C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Administrative Tools
CommonApplicationData  C:\ProgramData
CommonDesktopDirectory C:\Users\Public\Desktop
CommonDocuments        C:\Users\Public\Documents
CommonMusic            C:\Users\Public\Music
CommonOemLinks
CommonPictures         C:\Users\Public\Pictures
CommonProgramFiles     C:\Program Files\Common Files
CommonProgramFilesX86  C:\Program Files (x86)\Common Files
CommonPrograms         C:\ProgramData\Microsoft\Windows\Start Menu\Programs
CommonStartMenu        C:\ProgramData\Microsoft\Windows\Start Menu
CommonStartup          C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup
CommonTemplates        C:\ProgramData\Microsoft\Windows\Templates
CommonVideos           C:\Users\Public\Videos
Cookies                C:\Users\LotPings\AppData\Local\Microsoft\Windows\INetCookies
Desktop                C:\Users\LotPings\Desktop
DesktopDirectory       C:\Users\LotPings\Desktop
Favorites              C:\Users\LotPings\Favorites
Fonts                  C:\WINDOWS\Fonts
History                C:\Users\LotPings\AppData\Local\Microsoft\Windows\History
InternetCache          C:\Users\LotPings\AppData\Local\Microsoft\Windows\INetCache
LocalApplicationData   C:\Users\LotPings\AppData\Local
LocalizedResources
MyComputer
MyDocuments            C:\Users\LotPings\Documents
MyMusic                C:\Users\LotPings\Music
MyPictures             C:\Users\LotPings\Pictures
MyVideos               C:\Users\LotPings\Videos
NetworkShortcuts       C:\Users\LotPings\AppData\Roaming\Microsoft\Windows\Network Shortcuts
Personal               C:\Users\LotPings\Documents
PrinterShortcuts       C:\Users\LotPings\AppData\Roaming\Microsoft\Windows\Printer Shortcuts
ProgramFiles           C:\Program Files
ProgramFilesX86        C:\Program Files (x86)
Programs               C:\Users\LotPings\AppData\Roaming\Microsoft\Windows\Start Menu\Programs
Recent                 C:\Users\LotPings\AppData\Roaming\Microsoft\Windows\Recent
Resources              C:\WINDOWS\resources
SendTo                 C:\Users\LotPings\AppData\Roaming\Microsoft\Windows\SendTo
StartMenu              C:\Users\LotPings\AppData\Roaming\Microsoft\Windows\Start Menu
Startup                C:\Users\LotPings\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
System                 C:\WINDOWS\system32
SystemX86              C:\WINDOWS\SysWOW64
Templates              C:\Users\LotPings\AppData\Roaming\Microsoft\Windows\Templates
UserProfile            C:\Users\LotPings
Windows                C:\WINDOWS