Como excluir diretórios com caminho / nomes muito longos para exclusão normal

380

O Windows parece ter um limite de tamanho para os nomes de arquivos ao tentar excluir, embora não impeça a criação desses arquivos.

Nosso processo de compilação cria vários arquivos temporários (muitos criados a partir de um WSDL) que atingem esse limite. Nosso script ant é de alguma forma capaz de excluí-los ao fazer uma limpeza, mas às vezes eu preciso excluir o diretório da área de trabalho (para onde estão todos os arquivos temporários) sem realmente fazer uma limpeza completa do ant.

São os mesmos erros desta pergunta , mas as respostas não funcionam realmente para mim, pois estou lidando com um diretório, não um arquivo, e nem sempre sei quais arquivos ou subdiretórios específicos estão causando o problema. E estou tentando evitar qualquer processo manual (além de acionar um único comando) para realmente excluí-los.

Se eu tentar excluir o diretório do Explorer, recebo o erro

Cannot delete [file name]: The file name you specified is not valid or too long.  
Specify a different file name

A tentativa Remove-Itemno PowerShell fornece o seguinte erro:

Remove-Item : The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters.
At line:1 char:12
+ Remove-Item  <<<< -force -Recurse <directory>

Alguém conhece alguma ferramenta ou maneira fácil de contornar esse erro de exclusão sem precisar localizar manualmente os arquivos com problemas e movê-los / renomeá-los?

Herms
fonte
2
Encontrei a solução pouco antes de postar esta pergunta, mas como outros podem encontrar isso, decidi publicá-la para que pudessem encontrar a solução que encontrei.
Herms
Ah, eu sei, mas geralmente quando faço coisas assim, deixo a pergunta "sem resposta" por um tempo para ver se mais alguém tem uma solução melhor.
Herms
De longe, a solução mais simples: youtube.com/watch?v=qQTyTprFAOg
Data:
usando Ubuntuou qualquer outro Linux Bootable CD, podemos inicializar nosso computador Ubuntuou qualquer outro sistema operacional temporariamente. Em seguida, podemos selecionar a pasta e excluí-la facilmente.
Kelum Priyadarshane
1
Essa pergunta mais antiga também tem algumas respostas interessantes: superuser.com/questions/45697/…
AdamV 3/15/15

Respostas:

421

Use o 7-Zip File Manager para excluí-los.

Se você ainda estiver com problemas, utilize o Shift+ Deletedentro do 7-Zip File Manager. Caso contrário, o Windows tenta movê-los para a Lixeira (que falhará novamente).

Dentrasi
fonte
5
Graças - este se livrou de uma árvore dir que foi um pouco recursiva e foi muito profundo para del / rmdir / rm / Explorer para remover
Martin Beckett
63
funcionou muito bem usando Shift + Del - 7zip não poderia enviar arquivos de longo pathed para a lixeira ....
cori
66
+1 7zip. Você precisa navegar até a pasta e, em seguida, usar shift + Delcomo o @cori disse. Se você selecionar a Deleteopção no menu de contexto, ela falhará lá. shift + Delisto!
precisa
8
7zip não funcionou para win7 64, então o linux funcionou.
Erik Friesen 15/05
13
Eu votei isso porque, com o 7zip, você também pode excluir uma pasta que contenha longas pastas aninhadas. Tive o meu problema com uma pasta node_module que continha toneladas de pastas aninhadas e não consegui removê-las. 7zip corrigido da pasta base na perfeição. +1
Gruber
310

Nenhuma das outras respostas (gratuitas) aqui funcionou para mim, mas eu encontrei uma em outro site:

rimraf <dir>

rimraf é um Node.js pacote, então você vai precisar instalar Node.js que inclui npm . Então você pode executar:

npm install -g rimraf

Então você pode executar a rimrafpartir da linha de comando.

Encontrei esta solução porque o próprio npm estava causando esse problema devido à maneira como aninha dependências.

A propósito, rimrafrecebe o nome do comando UNIX rm -rf, que exclui recursivamente arquivos e pastas.

jordanbtucker
fonte
7
Tentei de várias maneiras. Isso simplesmente funciona perfeitamente!
Duckegg
2
A melhor resposta de todos :) sim sua beasy fácil
Al-Mothafar
2
Essa deve ser a resposta aceita.
NINCOMPOOP 10/03/16
13
Suas obras solução, mas isso é tão f ## k-up que eu tenho que usar o módulo um nó js para apagar nó js pastas módulos ... Eu não quero viver anymore neste planeta
Benoit P
4
Node criou o problema em primeiro lugar para mim, tão ... interessante ... que eles também têm uma solução.
Eric J.
141

Não é necessário instalar nenhum programa para resolver esse problema.

Esse problema é facilmente resolvido usando robocopy, pré-instalado desde o Windows Vista, lançado em 2006.

Por exemplo, rmdir /S /Q <dir>foi relatado falha em alguns casos. Não há necessidade de usar o 7zip ou qualquer outra ferramenta de terceiros. Powershell é um exagero. O Cygwin pode funcionar, mas você pode não o ter instalado. Então, vamos nos concentrar emrobocopy

A ideia é

  1. use robocopypara copiar + atualizado
  2. de uma nova pasta vazia
  3. para a pasta que você deseja excluir, o destino.

Após a execução robocopy, o diretório de destino também estaria vazio.

Essas instruções são para a linha de comando. Basta abrir a pesquisa no Windows, digite cmde pressione Enter.

Digamos que o alvo para exclusão seja:

C:\delete\this folder\with a very long name

Nós procedemos da seguinte forma:

  1. Primeiro, crie um diretório vazio, fi C:\emptyfolder.

    mkdir C:\emptyfolder
    
  2. Copie + atualize do diretório vazio para o destino, usando a opção /purge

    robocopy c:\emptyfolder "C:\delete\this folder\with a very long name" /purge
    
  3. Exclua o diretório vazio. Você não precisa mais disso.

    rmdir c:\emptyfolder
    

Como não há arquivos ou pastas no diretório de origem ( C:\emptyfolder), ele simplesmente exclui os arquivos e pastas do diretório de destino ( C:\delete\this folder\with a very long name) recursivamente!

  • Truque final: você pode evitar escrever à mão

    C:\delete\this folder\with a very long name
    

    Ao arrastar a pasta de uma janela do Explorer e soltar na janela Terminal / cmd.

Cuidado : os arquivos excluídos não irão para a pasta Lixeira ! Uma vez excluídos, os arquivos não podem ser recuperados.

(Retirado de "Caminho por muito tempo? Use Robocopy" por BVLANGEN )

PS: Eu sei que essa resposta estava aqui, menos didaticamente. Como excluir um arquivo no Windows com um nome de arquivo muito longo? [duplicado]

Benoit acrescentou:

Pode ser necessário passar por esse processo mais de uma vez para se livrar de todos os arquivos.

hectorpal
fonte
11
Obrigado bom senhor !! Essa deve ser a resposta aceita, pois todas as outras não funcionaram ou exigiram uma ferramenta de terceiros . :)
MickyD
Isso funciona perfeitamente ... não há necessidade de instalar nada (tanto quanto eu sei) e é rápido. Esta deve ser a resposta aceita!
precisa saber é o seguinte
1
Isso mantém alguns (ou todos) da árvore de diretórios em "c: \ deletefolder" (dir de destino). Enfim, apaguei tudo em um piscar de olhos para mim (acho que os arquivos eram pequenos) e eu apenas tive que manualmente <Del> "c: \ deletefolder", os diretórios filhos foram removidos sem problemas. Funcionou como um encanto. +1, deve ser a resposta aceita! :)
rld.
@rld, mas "deletefolder" já existia antes? Caso contrário, acho que deveria estar vazio se fosse um novo diretório. Caso contrário, é uma bagunça. Eu poderia adicionar um último passo para "rmdir deletefolder".
hectorpal
1
Ao lidar com diretórios altamente recursivos, essa opção é muito mais lenta que o 7zip. Depois de esperar 20 minutos, eu os comparei e percebi o 7zip, embora não mostre que o progresso estava 50x mais rápido.
Andy Gauge
84

Acredito que encontrei uma maneira de excluir as coisas cmd. Originalmente, eu tentei o delcomando, mas isso não funcionou. Então eu lembrei rmdir. Fazendo o seguinte:

rmdir /S /Q <dir>

parece ter funcionado.

Herms
fonte
105
Não funcionou para mim. :(
Andrew Arnott
lembre-se de colocar o cmd antes de tentar executar o rmdir.
22912 brianpeiris
8
Para aqueles que não conseguem usar esta solução, tenho uma solução alternativa que funcionou para mim (com nomes de caminho / arquivo muito longos): Mova o (s) arquivo (s) / diretório para C: \ para encurtar o caminho e exclua a partir daí.
Anders Sandberg Nordbø
6
É possível ter diretórios para os quais esta solução não funcione, que o 7-Zip possa excluir. Acabei de fazer isso acontecer comigo.
SamStephens
2
Esta solução está obtendo resultados inconsistentes. Por favor, não vote.
precisa saber é o seguinte
29

A ferramenta que eu usei quando tive esse problema foi o FastCopy . Selecionei Excluir tudo no menu suspenso, selecione o diretório que deseja excluir e cliquei em Excluir tudo .

Captura de tela da caixa de diálogo de exclusão do FastCopy

O FastCopy é portátil (não requer instalação) e há versões de 32 e 64 bits disponíveis.

braveterry
fonte
3
Se você estiver procurando por uma ferramenta de linha de comando, poderá usar uma pequena ferramenta publicada no GitHub ( github.com/epsitec/Tools-RecursiveDelete ).
Pierre Arnaud
Eu tinha um conjunto recursivamente gerado de arquivo / pasta aninhada. Esta foi a única solução funcionando.
Pierluigi
2
Isso funcionou para mim quando, o material da linha de comando falhou, a tentativa do 7zip falhou. e até o suporte da Microsoft ficou perplexo!
Kit Ramos
O mesmo aqui - eu meio que comecei a excluir arquivos com o 7zip, mas também agiu muito estranho e tive que Shift + Delere cada diretório várias vezes seguidas para excluí-lo, mas tentei essa ferramenta e funcionou como um encanto . Lançou duas vezes para se livrar de todos os arquivos. Obrigado!
Artanis 30/05
Obrigado, para mim também a única solução de trabalho, ÓTIMO !!!!
tim
26

Sem instalar software adicional, você pode usar o substcomando para criar temporariamente um alias para um diretório nomeado longo.

Por exemplo, se você deseja excluir a pasta, C:\Very long directory\that exceed\length limit\blah blah blah\abcde\folder to be deletedpode usar o comando

subst x: "C:\Very long directory\that exceed\length limit\blah blah blah\abcde"

e você pode excluir X:\folder to be deletedno Windows Explorer ou no prompt de comando facilmente. Para remover o alias da letra da unidade temporária, use o comando

subst x: /d
Kenneth L
fonte
Tentei todas as outras respostas (incluindo respostas de outras perguntas semelhantes) e essa foi a única que acabou funcionando para mim. E foi de longe o mais rápido.
glenneroo
1
Essa é de longe a melhor resposta: recursos simples e integrados, sem mexer no registro. Deve ser a resposta aceita.
Kevin Roche
Facilmente o método mais limpo e direto, obrigado Kenneth.
Seth
Essa resposta me assusta porque eu realmente tenho um drive X: Não há informações suficientes aqui e eu não recomendo que as pessoas sigam isso sem mais explicações.
qodeninja 9/09
25

O Cygwin's rm -rffunciona bem em caminhos longos!

gdw2
fonte
3
Cygwin funcionou para mim perfeitamente! Apenas fiz um -rm -rf e todos os arquivos foram excluídos.
Ranhiru Jude Cooray
3
Trabalhou para mim, bem no GNU bash, versão 4.1.10 (4) -release
rjzii
2
Funcionou muito bem ao executar a partir de uma janela de comando do Git Bash. Eu tinha instalado o GitGui para isso.
22

Basta soltar do Powershell no comando executando abaixo:

Cmd /C "rmdir /S /Q <dir>" 
Karl Glennon
fonte
3
"O diretório não está vazio". Opa O OP deseja excluir uma pasta não vazia.
precisa saber é o seguinte
como isso é diferente da resposta do @herms?
Bigbadmouse
18

A solução da Dentrasi foi a que funcionou melhor para mim, mas eu queria postar as etapas específicas em uma resposta de nível superior.

  1. Baixe e instale a versão estável mais recente do 7zip .
  2. Execute o Gerenciador de arquivos 7zip ( 7zfm.exe ).
  3. No 7zip File Manager, navegue para poder ver o nome da pasta que você deseja excluir (ou seja, você está na pasta pai).
  4. Mantenha o botão Shift pressionado.
  5. Clique no botão " Excluir ", no teclado ou na barra de ferramentas do 7zip File Manager; verifique se você ainda mantém a tecla Shift pressionada .
  6. Clique no botão " OK "; verifique se você ainda mantém a tecla Shift pressionada .
Massa Dot Net
fonte
Boa tentativa, mas ainda não funcionou para mim com os 10s de pastas recursivas. Apenas rimraf funcionou.
Julian Knight
@JulianKnight: Sim, essa abordagem também não terminou de funcionar 100% para mim. Eu só queria mencionar, porque estava entre os processos mais diretos e, pelo menos, funcionou parte do tempo. A única coisa que descobri que funcionou 100% do tempo é a abordagem de script do módulo Powershell + NTFSSecurity, que descrevi abaixo. O rimraf do IIRC falhou quando chamado, e foi assim que eu entrei nessa confusão. Veja este tópico do Node.js.
Mass Dot Net
Sim, sempre haverá problemas assim. De fato, foi o código de instalação da biblioteca do IDE do Arduino que me forneceu (Java). Selecionei acidentalmente a pasta que continha as bibliotecas como uma pasta para instalar e remover uma biblioteca! Eu matei o processo assim que percebi, mas já tinha dez mil ks de pastas (maldito i7 / SSD!) uma estrutura muito mais plana. Ainda estou realmente feliz que alguém me colocou no rimraf - fácil e grátis.
Julian Knight
@JulianKnight - Sim, um dia ou dois atrás alguém me disse que o npm3 deveria ajudar a aliviar esses problemas, impedindo estruturas de pastas de dependência profundamente aninhadas.
Mass Dot Net
Não sei se "impede", mas trata as dependências aninhadas de maneira mais sensata, de modo que, se o aplicativo principal exigir a biblioteca X v1.0 e a biblioteca Y exigir Z, que também requer o X v1.0, a biblioteca de nível superior será usada. Atualmente o Z instalaria sua própria versão do X.
Julian Knight
11

Há duas coisas ainda não mencionadas nas respostas existentes.

  1. Você pode usar o prefixo do caminho de tamanho estendido para acessar caminhos longos
  2. Com o Windows 10, você pode habilitar o suporte a caminhos longos para uso geral - observe que nem todos os aplicativos funcionarão com caminhos longos; você deve testar o software mais antigo. Somente o software com uma entrada de manifesto apropriada poderá fazer uso disso.

Prefixo do caminho longo

A API do Windows possui uma função especial que oferece suporte a nomes de caminhos Unicode com até 32k caracteres (cada elemento com até 255 caracteres).

Isso geralmente é chamado de nomeação UNC por engano, mas não é, porém, relacionado.

O prefixo usado para dizer à API para usar caminhos Unicode longos é o seguinte \\?\:

\\?\D:\very long path

Os nomes UNC são normalmente usados ​​quando se refere a caminhos em servidores remotos no formulário \\servername\path name\file name. Você pode combinar isso com o prefixo do caminho longo, para:\\?\UNC\server\share

Observe que alguns aplicativos mal escritos, mas infelizmente bastante comuns, não suportam caminhos de arquivo UNC nem o prefixo do caminho longo.

Referência: https://msdn.microsoft.com/en-gb/library/windows/desktop/aa365247(v=vs.85).aspx#maxpath

Suporte de caminho longo

Esta é uma opção que foi adicionada às versões recentes do Windows 10. Não é, no momento da redação, ativada por padrão, pois requer suporte de aplicativo específico. Curiosamente, o PowerShell possui suporte interno, portanto, habilitar essa opção permitirá que caminhos longos sejam usados ​​diretamente nos scripts do PowerShell.

Você pode ativá-lo através do editor de Diretiva de Grupo, se você tiver uma versão do Windows. Ou você pode simplesmente usar a seguinte alteração no Registro. Como sempre, faça backup da seção do registro que você está alterando antes de fazer qualquer coisa.

  1. Corra regedit.exe.
  2. Confirme o prompt do UAC.
  3. Navegue para a chave: HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy Objects\{48981759-12F2-42A6-A048-028B3973495F}Machine\System\CurrentControlSet\Policies
  4. Crie ou altere a chave LongPathsEnabled.
  5. Se não existir, clique com o botão direito do mouse em Políticas e selecione Novo> Valor Dword (32 bits) no menu.
  6. Definir LongPathsEnabledpara 1ativar.

Todos os aplicativos com entradas apropriadas de manifesto agora terão acesso aos caminhos longos padrão do POSIX. Isso deve incluir aplicativos da Windows Store.

Referência: https://blogs.msdn.microsoft.com/jeremykuhne/2016/07/30/net-4-6-2-and-long-paths-on-windows-10/

UPDATE 2017-04-09

@maoizm apontou um problema com a chave do registro acima, então fiz mais algumas investigações . Parece que agora você pode definir o suporte a nomes de arquivos longos com uma chave do sistema:

HKLM\SYSTEM\CurrentControlSet\Control\FileSystem LongPathsEnabled (Type: REG_DWORD)

No entanto, isso ainda funciona apenas para aplicativos especificamente configurados para usá-lo (requer uma entrada no manifest.xml do aplicativo).

Você também deve observar que não pode usar nomes de caminhos relativos com esse método.

Julian Knight
fonte
{48981759-12F2-42A6-A048-028B3973495F}Machineparte do caminho do registro será diferente em cada computador - pode não ser óbvio para todos
maoizm
1
@maoizm - bom ponto, obrigado por destacar isso. Por favor, veja minha atualização para uma alternativa se estiver usando a atualização W10 Anniversary ou posterior.
Julian Knight
Estou escrevendo uma biblioteca chamada FoundationIO e estou tentando tornar o caminho longo o padrão. Existe alguma função que eu possa chamar ou macro que eu possa definir para tornar o suporte ao caminho longo ativado automaticamente para qualquer usuário da minha biblioteca?
MarcusJ
Olá Marcus, esta é uma biblioteca nativa do Windows? Nesse caso, o .NET já possui o suporte necessário como parte da API relevante do Windows - desculpe-me por não conhecer os detalhes, pois não sou um programador de API .NET ou Win, mas os detalhes devem ser pesquisáveis ​​no MSDN.
Julian Knight
8

Eu gosto da solução cmd. Embora eu queira compartilhar outra solução alternativa que funcione apenas no Explorer: tente reduzir os nomes das pastas pai antes da exclusão: nomes mais curtos diminuirão o caminho. Digamos que você tenha esta estrutura em árvore da pasta:

C: \

.. Projetos

.. .. Algum projeto impressionante durante a primavera de 2014

.. .. .. alguma atividade no parque da cidade uma sexta-feira

.. .. .. .. Blá blá blá blá blá blá blá blá blá blá blá

Arquivos reais com nomes longos também

Nesse caso, você não pode excluir as pastas, também não pode excluir ou renomear os arquivos. Se você deseja remover toda a estrutura de pastas ou parte dela, é possível renomear temporariamente as pastas pai, reduzir o caminho e remover a pasta. Os nomes podem ser apenas letras:

C: \

.. Projetos

.. .. x

.. .. y

.. .. .. .. z

Arquivos reais com nomes longos também

No meu caso, eu só queria remover a pasta inteira com muitas subpastas e arquivos. Então, eu não me importei com os nomes das pastas.

Anatoly Mironov
fonte
1
Eu escrevi uma pequena ferramenta que faz exatamente isso e a coloca no GitHub. github.com/epsitec/Tools-RecursiveDelete
Pierre Arnaud
1
Todos os comandos ou Shift + DEL não funcionam para mim, mas isso funciona.
Larkee 21/07
Realmente não funciona quando você tem 10 k da de pastas aninhadas
Julian Knight
também não funciona se uma das pastas tiver um nome muito longo (não é possível renomear a pasta incorreta).
Aucuparia
7

A solução 7-zip funciona muito bem. Outra opção se você tiver o git instalado é abrir um shell bash e usar:

rm -f

(ou rm -rfpara pastas)

Do utilizador
fonte
1
Para os não iniciados, explique como você "abre um shell bash" no Windows?
OMY
1
@OMY você precisa do git instalado. Em seguida, no menu Iniciar, você pode abrir o git bash ou, se você optou por ter as extensões do shell ao instalar o git, clique com o botão direito do mouse na pasta ou em uma pasta e selecioneGit Bash Here
User
4

Eu sugiro o Total Commander (shareware, mas continua trabalhando após o período de teste com apenas uma tela inicial mínima). É assim que eu sempre resolvo problemas de nome de arquivo muito longos .

Sopalajo de Arrierez
fonte
1
Graças ao senhor que encontrei isso. Problemas ao excluir uma pasta node_modules porque decide aninhar estupidamente os diretórios.
Alias
Bem, @Alias, o Total Commander facilita essa detecção, pelo menos para mim. Depois de identificar esse problema, chkdskdeve resolvê-lo.
Sopalajo de Arrierez
A versão 7.0 não funciona, mostra uma mensagem de erro e sugere a operação como Administrador, que também falha.
precisa saber é o seguinte
@izogfif: a versão mais recente de hoje é 8.52a. Eu tentaria este. Você não fornece detalhes sobre sua mensagem de erro, mas pode haver alguma inconsistência na estrutura do arquivo que deve ser resolvida (pelo menos para NTFS) com "chkdsk c: / f" (assumindo a unidade C :).
Sopalajo de Arrierez
2

Você também pode excluí-los usando o nome abreviado equivalente. dir /xirá mostrar-lhes.

Ian Boyd
fonte
2

Eu criei um programa java simples que usa robocopy para excluir os arquivos. O jar é um executável. Para saída adicional, execute-o na linha cmd.

https://drive.google.com/file/d/0B5pSEjxJvt_1WVp1T3puSm1CNjg/view?usp=sharing

CamHart
fonte
2
E se você não quiser usar Java, poderá usar esta ferramenta que escrevi usando .NET ( github.com/epsitec/Tools-RecursiveDelete ).
Pierre Arnaud
@PierreArnaud great utility. Eu precisava de algo assim para automação de linha de comando. @ CamHart bom trabalho de você também! Obrigado rapazes!
amitthk
1

Eu tentei todas as outras respostas, mas elas não funcionaram (pelo menos para mim).

Me deparei com delinfile e funcionou muito bem e muito rapidamente!

O teste é limitado a 3 ações / 15 dias, mas é utilizável se você quiser excluir apenas algumas pastas / arquivos:

Jürgen Paul
fonte
1

Diretórios maiores também foram projetados para esta tarefa. insira a descrição da imagem aqui

  • Baixar
  • Usa uma chamada recursiva com RemoveDirectoryW para excluir diretórios existentes
  • Usa repositório de arquivos próprio para diretórios recém-criados
  • Os arquivos podem ser movidos dos diretórios antes da exclusão dos diretórios que contêm.
  • Rápido, embora navegar para o topo do diretório seja um clique por diretório aninhado
  • Windows XP (SP3) e superior
  • Código não gerenciado não assinado sem instalador, portanto, possível alerta do Smartscreen quando executado a partir de uma pasta sobressalente, por exemplo, na área de trabalho.

Mais informações em CodeProject .

Laurie Stearn
fonte
Leia Como recomendo o software para obter algumas dicas sobre como você deve recomendar o software. Você deve fornecer pelo menos um link, algumas informações adicionais sobre o software em si e como ele pode ser usado para resolver o problema na pergunta.
DavidPostill
@ David: Melhor? Link foi muito útil, obrigado.
precisa saber é o seguinte
1

Eu enfrentei esse problema no Windows 10 e encontrei esta solução fácil.

  1. Vá para um pouco mais fundo na sua árvore de pastas.
  2. Arraste e solte uma pasta de algum lugar no meio da árvore para algum começo da árvore usando a barra de endereço.
  3. Como na minha imagem, arraste e solte a caixa vermelha na caixa verde. (nesse caso, o caminho é mais curto, mas para caminhos longos também funciona)
  4. Em seguida, seu caminho fica mais curto e exclua normalmente usando a tecla Delete.

insira a descrição da imagem aqui

Nayana Adassuriya
fonte
1

Aqui está a resposta perfeita (para arquivos). Funciona no Windows 10.

REM Make sure there is no \ at the end of either path!
robocopy "C:\...\...\...\long\path" "C:\DeleteMe" "FileName" /MOV
REM Note: this ^ can be called many times before...:

REM Finally, recursively delete the higher up DeleteMe directory.
rmdir /S /Q DeleteMe

Consulte também: https://msdn.microsoft.com/en-us/library/aa365247.aspx#maxpath

Nenhuma resposta alternativa única em 4 perguntas foi suficiente para minhas necessidades. De nada, mundo.

Andrew
fonte
0

Finalmente descobri como fazer isso via Powershell. Aqui estão as instruções que eu segui para que isso funcionasse no Windows 7:

  1. Crie uma nova pasta chamada NTFSSecurity na pasta C: \ Users \ XXXX \ Documents \ WindowsPowerShell \ Modules \ NTFSSecurity , em que XXXX é o seu nome de usuário do Windows. Exemplo: se meu nome de usuário fosse " aspnyc ", a nova pasta seria C: \ Users \ aspnyc \ Documents \ WindowsPowerShell \ Modules \ NTFSSecurity .

  2. Faça o download do pacote do módulo PowerShell de segurança do sistema de arquivos - ele deve estar disponível como um arquivo ZIP simples.

  3. Abra um console do Powershell, execute Get-Module -ListAvailable e verifique se o NTFSSecurity aparece em algum lugar da lista de módulos registrados.
  4. No console do Powershell, execute o Import-Module NTFSSecurity .
  5. No console do Powershell, execute Remove-Item2 "YYYY" -Recurse , onde YYYY é o caminho do Windows para a pasta que você deseja excluir recursivamente (por exemplo, C: \ Potatoes \ Badgers \ FolderToDelete ).
Massa Dot Net
fonte
0

Finalmente descobri como fazer isso com o Powershell no Windows 10, onde os nomes de arquivos individuais eram muito longos. Aqui estão as etapas que segui para que isso funcionasse no Windows 10:

  1. Faça o download do pacote do módulo PowerShell de segurança do sistema de arquivos - ele deve estar disponível como um arquivo ZIP simples.
  2. Extraia o arquivo Zip como uma pasta NTFSSecurity no diretório C: \ WINDOWS \ system32 \ WindowsPowerShell \ v1.0 \ Modules.
  3. Abra um console do Powershell com a elevação administrativa (também conhecida como Modo Administrador), execute Get-Module -ListAvailable e verifique se NTFSSecurity aparece em algum lugar da lista de módulos registrados.
  4. Execute Set-ExecutionPolicy Unrestricted para ignorar o modo de execução assinado. Você deve confirmar esta ação com um Y (es)
  5. Eventualmente, cd para a pasta que você deseja excluir.
  6. No console do Powershell, execute o Import-Module NTFSSecurity .
  7. No console do PowerShell, execute Remove-Item2 "AAAA" -Recurse , onde AAAA é o caminho relativo ou absoluto do Windows para a pasta que você deseja excluir de forma recursiva (por exemplo C: \ Batatas \ Texugos \ FolderToDelete ).
  8. Verifique se funcionou.
  9. Eventualmente, volte ao modo de execução assinado com Set-ExecutionPolicy Restricted . Você precisa confirmar esta ação com Y (es).
Epicurista
fonte
0

Se você tiver o Bash no Ubuntu no Windows instalado, poderá fazer o cd no diretório pai em um prompt de comando regular e digitar:

bash -c "rm -rf dirname_here"

Que inicia o bash, exclui recursivamente o diretório do linux, onde não há restrições de nome de arquivo, e volta ao seu prompt de comando comum.

Richard Szalay
fonte