Excluir pastas com exclusões (caso)

1

Eu encontrei um script VB que usa FileSystemObject para excluir todas as pastas em uma unidade, exceto aquelas que eu especifico, meu problema é que o FileSystemObject não pode ver ou enumerar pasta com trailing / leading - period / space, mas o comando DIR pode ,

Estou tentando executar um comando para excluir todas as pastas de uma unidade (é do winPE durante a implantação do sistema operacional, portanto, tudo bem) EXCETO para o que especifico, isso faz parte do que eu trabalho e funciona bem, mas não escolhe pastas com nomes especiais ... existe uma maneira de usar o comando DIR para alimentar o "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
    
por IT.Never.Ends 04.07.2012 / 14:56

1 resposta

1

ok, em vez de usar o objeto filesystem, decidi usar o comando DIR simples no loop 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

aqui está o que acontece:

DIR lista todos os diretórios em \? \ C: \ recursivamente e gera uma lista simples para a saída para findstr que exclui os nomes encontrados naquele arquivo de texto e, em seguida, chama o comando delete, o arquivo exclusion.txt contém os itens que eu quero excluir obrigado a você e "TheOutcaste" deste tópico: forums.techguy.org /.../ 833910-solved-help-r-loop.html

    
por 05.07.2012 / 18:04