移动所有子目录中的文件到上一级的DOS命令

9

我有一个包含许多子文件夹及每个文件夹中有一个或多个文件的文件夹。我想编写一个批处理文件,将所有这些文件移动到C:\songs目录(例如)。可以提供帮助吗?我已经尝试过

C:\>FOR /R C:\Test %i IN (*) DO MOVE %i C:\Songs

文件夹Test和songs已经存在,但我收到一个错误提示信息。
%i was unexpected at this time. 

我做错了什么?
2个回答

5

(将子目录中的文件向上移动1个)

for /r %x in (*.*) do move "%x" "%x"/../..

(通常我使用反斜杠来表示最后一部分,但由于某种原因这个疯狂的东西一直在删除它们。不过无论哪种方式都可以正常工作)

(删除不必要的目录)

for /d /r %x in (bin) do rd "%x"

即,如果您有许多带有文件的目录,在这些目录下有"bin"目录,而您想将所有内容上移1并删除"bin"目录。

你会如何更改第一个命令,以使用所选文件夹而不是 (*.*)?(这是用于批处理文件中,我将使用自定义上下文菜单命令。) - u01jmg3

5
FOR /R %i IN (C:\Test\*) DO MOVE "%i" C:\Songs

在批处理文件中,必须使用 %%i。这是批处理的一个奇怪特性。

你运行了吗?对我来说它只是让控制台卡住了。很奇怪。 - Samuel Neff
如果文件夹很大,递归解析所有内容需要很长时间。是的,我已经在Win7和XP上测试过了。真正的MS-DOS需要使用*.*。 - SilverbackNet
对我来说,这个命令只能移动文件,而不能移动文件夹。我实际上是尝试将子文件夹中的文件移动到上一级目录 - 也许这会影响它。命令如下: FOR /R %i IN (.\folder\subfolder\*) DO MOVE "%i" .\folder\ - mvmn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接