2015-11-14 65 views
0

我無法弄清楚如何批量使用「移動」命令。下面是我在做什麼:不正確的移動語法?

@ECHO off 
SET name=t 
SET steam=C:\Program Files (x86)\Steam\steamapps\common\ 
SET buffer=C:\Users\Tyler\Desktop\buffer\ 
SET desktop=C:\Users\Tyler\Desktop\ 
SET s=%steam%%name% 
SET b=%buffer%%name% 
SET d=%desktop%%name% 
ECHO Moving %s% to %buffer% 
MOVE %s% %buffer% 
ECHO Moving %d% to %steam% 
MOVE %d% %steam% 
ECHO Moving %b% to %desktop% 
MOVE %b% %desktop% 
PAUSE 

這裏是這樣說的:

Moving C:\Program Files (x86)\Steam\steamapps\common\t to C:\Users\Tyler\Desktop\buffer\ 
The syntax of the command is incorrect. 
Moving C:\Users\Tyler\Desktop\t to C:\Program Files (x86)\Steam\steamapps\common\ 
The syntax of the command is incorrect. 
Moving C:\Users\Tyler\Desktop\buffer\t to C:\Users\Tyler\Desktop\ 
The system cannot find the file specified. 
Press any key to continue . . . 

我試圖移動文件夾 「T」,也就是在C:\ Program Files文件(x86)的\ Steam \ steamapps \ common \ t添加到桌面上的「緩衝區」文件夾中。然後,我想將桌面上名爲「t」的文件夾移動到上面的蒸汽路徑,然後將緩衝區文件夾中的「t」移動到桌面上的「t」。

我將要做的就是使用它將遊戲目錄從修改版本切換到非修改版本。

+3

您需要周圍的雙引號包含空格的目錄名稱。 –

+0

@KenWhite哇...這很尷尬。這解決了它。 – Twijn

回答

1

你的批處理腳本幾乎是完美的,你只會忘記引用目錄行。你必須這樣做,因爲你的文件和目錄名通常會包含空格,解釋器使用這些空格來標記一個參數結束和另一個開始的位置,因此你必須使用雙引號來分隔參數。

SET file=moveme.yay 
SET from=Z:\home\durden\documents\batch\a with space\ 
SET to=Z:\home\durden\documents\batch\b with space\ 
ECHO Moving 
move "%from%%file%" "%to%%file%" 

如果您需要在Windows上使用更復雜的腳本,請嘗試使用PowerShell。 (也robocopy1是一種的移動和複製的更新版本,您可以使用,太)

感謝張貼這個問題,並把我這樣的DOS懷舊:)

+0

感謝您的幫助和解釋,但是您的意思是「只有在兩個文件夾在同一個單元上時才能移動」。你的意思是在同一個驅動器上?另外,我對批處理知之甚少......事實上,這是我對批處理做的第一件事...我通常使用Lua和一些Java。 – Twijn

+0

是的,但「單位」我的意思是源文件夾和目標文件夾應該在同一個「驅動器」(如C:例如)。你不會有任何問題,因爲在你的例子中,你似乎只使用C盤。 – edo9k

+0

另外,請記住'移動'實際上**移動**文件,所以在源文件夾中不會有任何副本。如果您只想複製它,請改用'copy'或'robocopy'。 – edo9k