пакет для удаления подпапок всех подпапок - PullRequest
0 голосов
/ 30 июня 2018

Итак, я сейчас пытаюсь удалить несколько подпапок, которые были созданы программой, периодически, потому что она будет воссоздавать подпапки. Я знаю, как планировать пакетный файл, сейчас моя проблема в том, как эффективно создать пакетный файл для начала. Чтобы уточнить, скажем, у меня есть каталог с именем D:\IGSG. В D:\IGSG есть 250 папок, и внутри каждой из них есть папка с именем D:\IGSG\F252341\arg. Я хочу удалить все папки \arg из всех имеющихся у меня папок ~ 250 F, не удаляя другие файлы внутри папок F. Прямо сейчас единственный способ сделать это, о котором я знаю, состоит в том, чтобы иметь партию, которая идет

cd D:\IGSG\F252341 del /Q arg

и повторять эти строки для каждой подпапки, но вводить имена этих папок для каждой папки там было бы утомительно, особенно если учесть, что время от времени создаются новые. Поэтому я ищу способ с помощью пакета удалить подпапку подпапки, не удаляя другие файлы, если это имеет смысл.

Ответы [ 2 ]

0 голосов
/ 01 июля 2018

В строке cmd for /d /r X:\path в сочетании с подстановочным знаком будут перечислены все имена папок arg добавленная .? соответствует этому требованию:

for /d /r D:\IGSG %A in (arg.?) do @echo rd /s /q "%A" 

если вывод выглядит правильно, удалите эхо.

В пакетном файле удвойте% -signs -> %% A

@Echo off
for /d /r D:\IGSG %%A in (arg.?) do echo rd /s /q "%%A"

Один из редких случаев, когда линия batch / cmd может конкурировать с PowerShell.

0 голосов
/ 30 июня 2018

Этот сценарий PowerShell будет проходить через структуру подкаталогов и удалять все файлы и подкаталоги в каталогах arg. Обязательно измените местоположение каталога IGSG на ваше. Когда вы убедитесь, что правильные файлы будут удалены, удалите -WhatIf из командлета Remove-Item.

Get-ChildItem -Directory -Recurse -Path 'C:\src\t\delsubs\IGSG\F*' -Filter 'arg' |
    Remove-Item -Path {(Join-Path -Path $_.FullName -ChildPath '*')} -Recurse -Force -WhatIf

Если вам нужно запустить его из оболочки cmd.exe, поместите приведенный выше код в файл с именем 'dodel.ps1' и запустите с помощью:

powershell -NoProfile -File .\dodel.ps1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...