題 嘗試使用FOR循環移動文件時出現語法錯誤


我試圖遍歷指定文件夾中“folder”文件夾中的所有文件,並將它們移動到另一個文件夾中。

我有這個代碼:

@ECHO OFF
FOR /R C:\Users\user\Desktop\New^ folder^ 3\ %%F IN (folder\*.*) DO (
    MOVE %%F C:\Users\user\Desktop\New^ folder\
)
PAUSE

但它帶來了語法錯誤。 但是,當我ECHO %% F時,它會正確顯示每個文件的完整路徑。

我在這做錯了什麼?

謝謝。


2
2017-12-13 20:17


起源




答案:


您需要在包含空格的文字字符串周圍使用引號。

@ECHO OFF
FOR /R C:\Users\user\Desktop\New^ folder^ 3\ %%F IN (folder\*.*) DO (
    MOVE "%%~F" "C:\Users\user\Desktop\New folder\"
)
PAUSE

2
2017-12-13 20:22



它的作用就像一個魅力,頭腦解釋'〜'的確切含義,為什麼我不能在第二個參數中使用'^'? - bruneti12
@ bruneti12代字號 ~ 從變量中刪除(如果有)周圍的引用。你不能逃避的原因 ^ 這些空間是因為MOST程序對使用空格作為參數分隔符非常嚴格。因此,如果您想要一個包含空格的整個路徑作為單個參數發送到move命令;它必須在引號內。有關變量修飾符的更多信息,請參閱 call /?。以下是一些很棒的批量參考站點: robvanderwoude.com 和 ss64.com - David Ruhmann