Questão Acesso negado, cmd move windows 7


Eu não posso usar este comando no win 7 quando quiser mover um diretório se o destino existir. Diz acesso negado. Por que acontece isso? Funcionou no XP.

move /y "%1" c:\mydir\

Eu posso usar o robocopy, mas depois ele irá mover apenas o conteúdo da pasta. não a pasta completamente.

robocopy "%1" c:\mydir /E /IS /MOVE

Como posso resolver este problema?


6


origem


Ao mover arquivos, o comando Mover funciona bem. Mas quando a fonte é uma pasta, ela falhará se o destino já existir e tiver que sobrescrever. - Aziz
O xcopy funciona? Em caso afirmativo, você poderia usar xcopy e, em seguida, excluir a fonte como uma solução alternativa?
Acesso negado também pode significar "um arquivo nesta pasta ou a própria pasta ainda é aberta por um programa em execução". - Robert
O xcopy funciona bem, mas o robocopy é melhor, pois não preciso excluir os diretórios copiados no final. Mas, neste caso, só posso mover o conteúdo da pasta de origem, pois quero usar% 1. isto é horrível!! - Aziz
Eu fiz um novo post com mais informações superuser.com/questions/339067 - Aziz


Respostas:


Experimentar:

IF EXIST "c:\mydir" (
     robocopy "%1" c:\mydir /E /IS /MOVE 
     ) ELSE (
     move /y "%1" c:\mydir 
     )

Isto irá verificar se a pasta existe e mover o conteúdo se a pasta existir e se a pasta não sair, então irá mover sua pasta. Se você ainda tiver acesso negado, então você provavelmente precisa obter privilégios de administrador.


4



Obrigado pela sua resposta, isso foi bom tentar, mas eu não preciso verificar se mydir existe .. eu preciso verificar se% 1 é um diretório, em seguida, verifique se existe uma pasta com o mesmo nome no mydir, em seguida, fazer exatamente o que você faz acima. Verifica superuser.com/questions/339067/… - Aziz


Finalmente .. aqui está a solução .. Obrigado pela ajuda pessoal :)

SET mydir=C:\mydir
IF EXIST "%mydir%\%~n1\" (
  ROBOCOPY %1 "%mydir%\%~n1" /E /IS /MOVE
) ELSE (
  MOVE /Y %1 "%mydir%\"
)

4





Se você está recebendo ACCESS DENIED mensagens de erro ao tentar mover uma pasta, seja

  1. Você não tem permissões corretas para mover a pasta
  2. Você não tem as permissões corretas para mover um ou mais dos arquivos na pasta
  3. Um ou mais arquivos estão sendo acessados ​​pelo sistema / um aplicativo
  4. Um ou mais arquivos estão protegidos contra exclusão.

Verifique todas essas possibilidades.


2



Tem que ser outra coisa .. Por favor, tente se você tiver win7. Crie uma árvore de pastas como esta raiz \ aaa \ test \ a.txt e root \ bbb \ test \ b.txt e tente "mover raiz \ aaa \ test root \ test" e "mover root \ move \ test root \ test "primeiro será ok, mas o próximo falhará - Aziz
@ Aziz, você está pedindo para MOVE "C:\aaa\test" "C:\test" e depois MOVE "C:\bbb\test" "C:\test"? Eu não posso testar como não tenho o Win7, mas não faz sentido que um funcione, mas não o outro. A única outra coisa que vem à mente é se você tem nomes de arquivos idênticos em pastas aaa e bbb, e tentar sobrescrevê-los está retornando ACCESS DENIED - Mechaflash
MOVE com a opção / Y funcionou bem no Windows XP. Eu não tentei no Vista. As pastas "teste" em cada diretório (aaa, bbb, etc.) podem ter vários arquivos e pastas iguais, e é por isso que quero mesclar essas pastas. A operação é a mesmo que arrastar e soltar para mover cada pasta "test" coloque um confirmar todas as substituições. No entanto, posso obter o mesmo resultado com a operação xcopy ou robocopy e, em seguida, excluir a fonte. Você pode mover e substituir os arquivos existentes, mas substituindo diretórios dá um "acesso negado" no win7. Eu preciso resolver isso OU preciso de ajuda para converter o comando MOVE como minha tentativa na minha pergunta. - Aziz
Eu fiz um novo post com mais informações superuser.com/questions/339067 - Aziz
Eu estava no diretório que eu estava tentando mover (dir em uso) - Eric Fossum


Eu sou coxo e não entendo exatamente o que as respostas aqui estão fazendo sob o capô, então eu criei este copy / paste doozy

SET src=C:\dev
SET dest=D:\dev
IF EXIST %dest% (ROBOCOPY %src% %dest% /E /IS /MOVE) ELSE (MOVE /Y %src% %dest%)

0