Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 不正确的移动语法?_Batch File - Fatal编程技术网

Batch file 不正确的移动语法?

Batch file 不正确的移动语法?,batch-file,Batch File,我不知道如何批量使用“move”命令。以下是我正在做的: @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% EC

我不知道如何批量使用“move”命令。以下是我正在做的:

@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 . . .
我正在尝试将C:\Program Files(x86)\Steam\steamapps\common\t中的文件夹“t”移动到桌面上的“buffer”文件夹中。然后,我想将桌面中名为“t”的文件夹移动到上面的蒸汽路径,然后将缓冲区文件夹中的“t”移动到桌面中的“t”


我要做的是用它将一个游戏的目录从修改过的版本切换到非修改过的版本。

你的批处理脚本几乎完美,你只是忘了引用目录行。您必须这样做,因为您的文件名和目录名经常包含空格,解释器使用这些空格来标记一个参数结束和另一个参数开始的位置,因此您必须使用双引号来分隔参数

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。(另外,
robocopy
是移动和复制的一种更新版本,您也可以使用它)


谢谢你发布这个问题,给我带来了这样的怀旧:)

你需要在包含空格的目录名周围加上双引号。@KenWhite哇。。。那太尴尬了。这就解决了问题。谢谢你的帮助和解释,但是“只有当两个文件夹在同一个设备上时,移动才有效”是什么意思?你是说在同一个驱动器上吗?而且我对批处理知之甚少。。。事实上,这是我用batch做的第一件事。。。我通常使用Lua和一些Java。是的,但是“unit”我的意思是源文件夹和目标文件夹都应该在同一个“驱动器”上(比如C)。您不会有任何问题,因为在您的示例中,您似乎只使用C驱动器。另外,请记住
move
实际移动了文件,因此源文件夹上不会留下任何副本。如果您只想复制它,请改用
copy
robocopy
。“帮助命令说,移动仅在两个文件夹位于同一单元上时有效。”-不正确。帮助中没有这样的说明,MOVE在将文件从一个驱动器移动到另一个驱动器时没有问题。按照惯例,[批处理文件]是为Windows上的批处理文件编程保留的,wine/linux肯定不是Windows。这种移动限制是wine/linux的特性,而不是标准的Windows行为。