2015-11-14 25 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