Criei um programa em lote no Windows 7 há alguns meses. Seu objetivo básico é organizar os itens que baixei em diferentes pastas nas bibliotecas, com base no tipo de arquivo, e depois abrir o Windows Media Player (para que minha mídia possa ser acessada pelo meu Xbox360). Após a atualização para o Windows 10, o arquivo em lote parou completamente de funcionar - em vez de mover arquivos, tudo o que ele faz é gerar erros dizendo access is denied
. Mesmo que a estrutura do arquivo tenha permanecido intacta. O código é o seguinte.
echo Organizing Your Videos . . .
move *.mp4 C:\Users\Devon\Videos
echo Your Videos have been Organized!
echo Organizing Your Images . . .
move *.jpg C:\Users\Devon\Pictures\
move *.bmp C:\Users\Devon\Pictures\
move *.gif C:\Users\Devon\Pictures\
move *.png C:\Users\Devon\Pictures\
move *.PNG C:\Users\Devon\Pictures\
echo Your images Have Been Organized!
echo ORGANIZATION PROTOCOL COMPLETE!!!
echo Starting Windows Media Player ...
echo Waiting 5 Seconds ...
timeout 5
start wmplayer.exe
Tenho 99% de certeza de que é algum tipo de erro de sintaxe, mas não sei como corrigi-lo ou se estou fazendo certo. EDIT: Esta é uma imagem do erro que estou recebendo:
Responder1
Supondo que você esteja movendo arquivos da pasta Downloads, eu escreveria assim:
@echo off
set "dwn=%USERPROFILE%\Downloads"
set "pic=%USERPROFILE%\Pictures"
set "vid=%USERPROFILE%\Videos"
echo Organizing Your Videos . . .
for /r "%dwn%" %%A in (*.mp4) do (move /y "%%A" "%vid%" >nul)
echo.
echo Your Videos have been Organized!
echo.
echo Organizing Your Images . . .
for /r "%dwn%" %%B in (*.jpg *.bmp *.gif *.png) do (move /y "%%B" "%pic%" >nul)
echo.
echo Your Images have been Organized!
echo.
echo _
echo /(^|
echo ( :
echo __\ \ _____
echo (____) `^|
echo (____)^| ^|
echo (____).__^|
echo (___)__.^|_____
echo.
echo ORGANIZATION PROTOCOL COMPLETE!!!
echo.
echo Starting Windows Media Player . . .
echo.
echo Waiting 5 seconds . . .
timeout 5 >nul
start wmplayer.exe
o for /r
loop por todos os arquivos em um diretório - parece excessivo quando você tem apenas um tipo de arquivo de vídeo, mas você pode ver como as imagens são tratadas por uma linha; você pode fazer o mesmo para outros tipos de vídeo, conforme necessário. Separei as coisas de acordo com minha preferência pessoal e, por algum motivo, sinto que você apreciaria o talento de ter um sinal de positivo, então passei mais tempo nisso do que escrevendo o código - já que tenho um bom senso de prioridade. Eu sempre prefiro variáveis quando elas podem limpar as coisas e evitar que você tenha que mudar de caminho em diversas linhas diferentes. A %USERPROFILE%
variável de ambiente também é uma prática recomendada se você estiver trabalhando no perfil que seu script está modificando - o que você está fazendo. Observe que com %USERPROFILE%
, se você executar este script como administrador a partir de uma conta que não possui administrador, ele funcionará/modificará o perfil de usuário do administrador.
Observe também que as extensões de arquivo não diferenciam maiúsculas de minúsculas, então removi a extensão .PNG
.
Responder2
O problema é o ambiente de diretório em que seu script cmd está sendo executado.
Está funcionandoc:\Windows\System32
Então, ele está tentando mover arquivos do sistema em vez de arquivos dos seus downloads.
Altere o script para ter explicitamente o caminho para sua pasta de download e deve funcionar perfeitamente
echo Organizing Your Videos . . .
move C:\Users\Devon\Downloads\*.mp4 C:\Users\Devon\Videos
echo Your Videos have been Organized!
echo Organizing Your Images . . .
move C:\Users\Devon\Downloads\*.jpg C:\Users\Devon\Pictures\
move C:\Users\Devon\Downloads\*.bmp C:\Users\Devon\Pictures\
move C:\Users\Devon\Downloads\*.gif C:\Users\Devon\Pictures\
move C:\Users\Devon\Downloads\*.png C:\Users\Devon\Pictures\
move C:\Users\Devon\Downloads\*.PNG C:\Users\Devon\Pictures\
echo Your images Have Been Organized!
echo ORGANIZATION PROTOCOL COMPLETE!!!
echo Starting Windows Media Player ...
echo Waiting 5 Seconds ...
timeout 5
start wmplayer.exe
Embora você realmente deva usar a variável de perfil do usuário no lugar do caminho em ambos os lados para estar preparado para o futuro