批次檔無法正確移動文件

批次檔無法正確移動文件

幾個月前,我在 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

儘管實際上您應該使用使用者設定檔變數來代替兩側的路徑,以便麵向未來

相關內容