Exclusão em lote: acesso negado

10

Estou tendo problemas com o delcomando em um arquivo em lotes. Quando chega à etapa de exclusão, recebo a mensagem "Acesso negado". Meu comando em lote se parece com isso.

set destPath=\\Public01\Appl\CompOps\Jobs\

robocopy . "%destPath%" *.dtsx *.dev *.prod *.ppro /IS

pushd "%destPath%"
del *.dtsConfig
ren *.dev .
popd

Digite a descrição da imagem aqui

Posso navegar até o diretório e excluir os arquivos sem nenhum problema no Windows Explorer .

Tentei executar como administrador, mas ainda o mesmo problema.

agradl
fonte

Respostas:

7

Para forçar um delcomando a excluir arquivos somente leitura, adicione o /Fsinalizador.

Aparentemente, um arquivo somente leitura normalmente não pode ser excluído por um arquivo em lotes, embora ainda possa ser excluído pelo Windows Explorer . Para verificar se seu arquivo é somente leitura, você pode clicar com o botão direito do mouse no arquivo e selecionar propriedades, ou entrar attrib <filename>no prompt de comando. Isso mostrará uma série de letras correspondentes a diferentes atributos de arquivo.

R = Read-only file
A = Archive file
S = System file
H = Hidden file

Você pode remover a marca somente leitura desmarcando a caixa na janela de propriedades ou executando o comando attrib <filename> -R.

SaintWacko
fonte
infelizmente, isso não resolve o problema, eu atualizarei minha pergunta para incluir sua sugestão.
Agrad1
Tente colocar pauseantes do delcomando e tente excluí-lo pelo Windows Explorer enquanto estiver em pausa.
11117 SaintWacko
Eu encontrei a solução, no entanto, se você deseja editar a sua resposta para incluir algumas sugestões, além de minha solução que eu ficaria feliz em marcá-la como a resposta
agradl
Tudo bem, essas informações são retroativamente úteis? :)
SaintWacko
Tenho certeza de que será útil quando eu esquecer este problema meses a partir de agora :)
agradl
2

Depois de experimentar as opções disponíveis para o comando "del", descobri que os arquivos que estava tentando excluir eram somente leitura. Para resolver o problema, eu poderia editar os arquivos para remover o atributo somente leitura ou especificar a opção / F.

O script final é

set destPath=\\Public01\Appl\CompOps\Jobs\

robocopy . "%destPath%" *.dtsx *.dev *.prod *.ppro /IS

pushd "%destPath%"
del /F *.dtsConfig
ren *.dev .
popd

Solução simples, mas uma mensagem de erro enganosa. Espero que isso ajude outra pessoa.

agradl
fonte
Se você puder apenas lê-lo, um acesso negado parece certo para mim.
surfasb
1

O que funcionou no meu PC com Windows 8.1:

Primeiro, feche o Windows Explorer:

Pressione Ctrl+ Alt+ Delpara abrir o Gerenciador de tarefas , vá para processos, localize o Windows Explorer , clique com o botão direito do mouse e termine a tarefa . Não se preocupe se a barra de início se foi e algo mais. Use Alt+ Tabpara percorrer os arquivos. Em seguida, no Gerenciador de tarefas, clique em Arquivo e Executar nova tarefa e digite cmd. Isso abrirá uma linha de comando .

Dentro do terminal :

Se a sua versão for 32 bits e, no meu caso, estiver localizada em Arquivos de Programas (x86) , você deve digitar:

cd "C:\Program Files (x86)\Git\git-cheetah"
regsvr32 /u git_shell_ext64.dll

Isso foi para cancelar o registro.

Você pode percorrer os diretórios usando cd directorynamee pode recuperar um diretório por cd ... Para visualizar o que está em um diretório, você pode digitar dirquando estiver nesse diretório. Para excluir o tipo de arquivo:

del /F filename

Depois disso, abra novamente o Gerenciador de Tarefas , vá para Arquivo e execute explorer. Dessa forma, você chegará à exibição normal. Vá para a pasta Git da qual queríamos nos livrar e exclua-a simplesmente.

Espero que isso funcione para outras pessoas que estão usando o Windows 8.1.

Tolga Varol
fonte