배치 파일이 파일을 제대로 이동하지 않습니다.

배치 파일이 파일을 제대로 이동하지 않습니다.

몇 달 전에 Windows 7에서 배치 프로그램을 만들었습니다. 기본 목적은 내가 다운로드한 항목을 파일 형식에 따라 라이브러리의 여러 폴더에 정리한 다음 Windows Media Player를 여는 것입니다(그래서 내 Xbox360에서 내 미디어에 액세스할 수 있음). Windows 10으로 업그레이드한 후 배치 파일이 완전히 작동을 멈췄습니다. 파일을 이동하는 대신 access is denied. 파일 구조가 변경되지 않은 경우에도 마찬가지입니다. 코드는 다음과 같습니다.

   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

나는 이것이 일종의 구문 오류라고 99% 확신하지만 어떻게 해결해야 할지 또는 내가 이 작업을 올바르게 수행하고 있는지 잘 모르겠습니다. 편집: 이것은 내가 겪고 있는 오류의 사진입니다.

답변1

다운로드 폴더에서 파일을 이동한다고 가정하면 다음과 같이 작성합니다.

@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

디렉터리에 있는 모든 파일을 반복 for /r합니다. 비디오 파일 형식이 하나만 있으면 과도해 보이지만 한 줄로 사진이 어떻게 처리되는지 확인할 수 있습니다. 필요에 따라 다른 비디오 유형에 대해서도 동일한 작업을 수행할 수 있습니다. 나는 개인적인 취향에 따라 간격을 두었고 어떤 이유에서인지 여러분이 엄지손가락을 치켜세우는 재능을 높이 평가할 것 같아서 코드를 작성하는 것보다 그것에 더 많은 시간을 보냈습니다. 우선 사항. 나는 일을 정리하고 여러 다른 줄에서 경로를 변경하지 않아도 되는 변수를 항상 선호합니다. %USERPROFILE%스크립트가 수정 중인 프로필 내에서 작업하는 경우에도 환경 변수는 모범 사례입니다 . 을 사용하여 %USERPROFILE%관리자가 없는 계정에서 관리자로 이 스크립트를 실행하면 대신 관리자의 사용자 프로필에서 작동/수정됩니다.

또한 파일 확장자는 대소문자를 구분하지 않으므로 .PNG.

답변2

문제는 cmd 스크립트가 실행되는 디렉터리 환경입니다.

실행중입니다c:\Windows\System32

따라서 다운로드 파일 대신 시스템 파일을 이동하려고 합니다.

다운로드 폴더의 경로를 명시적으로 포함하도록 스크립트를 변경하면 제대로 작동합니다.

 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

실제로는 미래에도 사용할 수 있도록 양쪽 경로 대신 사용자 프로필 변수를 사용해야 합니다.

관련 정보