удалить папку с подстановочными знаками, используя некоторые переменные - PullRequest
0 голосов
/ 24 мая 2018

в 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 \ и т. Д.) Работает нормально ... очень редко:

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

Примечание: тест в Win 7. Я не уверен, происходит ли то же самое в Windows 8/10

как я могу решить это?Заранее спасибо

1 Ответ

0 голосов
/ 24 мая 2018

Чтобы найти подходящую переменную среды для вашей задачи, вы можете ввести ее в окне 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

Но будьте осторожны, некоторые special folders могут быть перемещены на другие диски/ папки.Вам понадобится 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($_)}

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
...