Я нашел сценарий VB, который использует FileSystemObject для удаления всех папок на диске, кроме тех, которые я указал, моя проблема в том, что FileSystemObject не может видеть или перечислять папку с конечной / ведущей точкой / пробелом, но команда DIR может,
Я пытаюсь запустить команду для удаления всех папок на диске (это из winPE во время развертывания ОС, так что все в порядке), ЗА ИСКЛЮЧЕНИЕМ той, которую я указываю, это часть того, с чем я работаю, которая отлично работает, но не выбирает папки со специальными именами ... есть ли способ использовать команду DIR для подачи "Select Case"?
For each oFolder in oFSO.GetFolder(oEnvironment.Item("DestinationLogicalDrive") & "\").Subfolders
Select Case lcase(oFolder.Name)
Case "minint", "recycler", "system volume information", "deploy", "drivers", "_smstasksequence", "smstslog", "sysprep", "userstate"
oLogging.CreateEntry "Skipping " & oFolder.Path, LogTypeInfo
Case Else
oLogging.CreateEntry "Deleting " & oFolder.Path, LogTypeInfo
sCmd = "cmd /c rd ""\\?\" & oFolder.Path & """ /S /Q"
iRc = RunAndLog(sCmd, false)
TestAndLog iRc,"Execution: " & sCmd
If iRC <> 0 Then
If oFSO.FolderExists(oFolder.Path) Then
oLogging.CreateEntry "Failed to delete " & oFolder.Path & " will try to rename", LogTypeError
sCmd = "cmd /c rename """ & oFolder.Path & """ """ & oFolder.Name & ".bad"""
iRc = RunAndLog(sCmd, false)
TestAndLog iRc,"Execution: " & sCmd
If iRC <> 0 Then
If oFSO.FolderExists(oFolder.Path) Then
oLogging.CreateEntry "Failed to delete or rename " & oFolder.Path & " the image WILL fail with NTLDR", LogTypeError
' TODO: notify, sit and wait
End If
End If
End If
End If
End Select
хорошо, вместо использования объекта файловой системы я решил использовать простую команду DIR в цикле FOR,
@echo off
for /f "tokens=*" %%i in ('dir /s /a:D /b \\?\C:\*.*^|"%~dp0"\findstr /I /V /G:"%~dp0\exclusion.txt"') do Call :Delete "%%i"
:Delete
echo found %1
rd /s /q %1
вот что происходит:
DIR перечисляет все каталоги в \? \ C: \ рекурсивно и выводит пустой список, выводящий вывод на findstr, который исключает имена, найденные в этом текстовом файле, а затем вызывает команду удаления, файл exclusion.txt содержит элементы, которые я хочу исключить, спасибо вам и "TheOutcaste" из этой ветки: forum.techguy.org/.../833910-solved-help-r-loop.html