简单的Windows批处理来移动文件夹

我只是试图将d:\temp\test所有文件和子目录移动到d:\temp\archive ,所以我尝试了这些命令:

 move d:\temp\test\* d:\temp\archive\ move d:\temp\test\*.* d:\temp\archive\ 

但是我得到了这个错误:

 The filename, directory name, or volume label syntax is incorrect. 

然后我在网上挖了一遍,然后在doc bat里面试了一下:

 for %%F in ( d:\temp\test\*.* ) do move /Y %%F d:\temp\archive 

这一次显示没有错误,但一切都静止不动,没有任何改变。

我在这里错过了什么? 我在Windows 10上尝试这个。

好的,如果你只想从\test \里面移动所有的文件目录,那么这个文件会先执行文件,然后执行批处理目录。 for / d将复制目录和子目录和文件。

 @echo off move "d:\temp\test\*" "d:\temp\archive" for /d %%a in ("D:\temp\test\*") do move "%%~fa" "d:\temp\archive\" 

作为一个侧面说明,从cmd运行时,你会得到一个错误。

 move d:\temp\test\* d:\temp\archive 

这是因为它会移动所有文件,但不会移动目录。 如果您The filename, directory name, or volume label syntax is incorrect. 没有文件,只有您的移动命令无法看到的文件夹。

从批处理文件中注意/Y开关被禁用,如果存在,文件夹将不会被替换。 因此,如果您计划经常覆盖,或许应该使用xcopy和更新归档文件,然后在文件成功复制后在d:\temp运行一个删除文件。

最后,总是把你的路径放在双倍的位置上,在这种情况下,如果没有双引号就可以正常工作,但是如果你有类似move d:\program files\temp\* d:\temp\archives话,会产生一个错误,程序和文件之间的空间,所以最好使用move "d:\program files\temp\*" "d:\temp\archive

编辑了解%%~分配。 在这些例子中,我们使用%%I而不是%%a

 %~I : expands %I removing any surrounding quotes (") %~fI : expands %I to a fully qualified path name %~dI : expands %I to a drive letter only %~pI : expands %I to a path only %~nI : expands %I to a file name only %~xI : expands %I to a file extension only %~sI : expanded path contains short names only %~aI : expands %I to file attributes of file %~tI : expands %I to date/time of file %~zI : expands %I to size of file %~$PATH:I : searches the directories listed in the PATH environment variable and expands %I to the fully qualified name of the first one found. if the environment variable name is not defined or the file is not found by the search, then this modifier expands to the empty string The modifiers can be combined to get compound results: %~dpI : expands %I to a drive letter and path only %~nxI : expands %I to a file name and extension only %~fsI : expands %I to a full path name with short names only %~dp$PATH:I : searches the directories listed in the PATH environment variable for %I and expands to the drive letter and path of the first one found. %~ftzaI : expands %I to a DIR like output line`