如何将树中的每个文件移到树的根?


10

我有一个包含很多子文件夹B,C,D,E的文件夹(我们称它为A),然后又有了子文件夹B1,B2,B3,... C1,C2,C3 ...

如何使用cmd将所有文件从所有子文件夹移动到“根”文件夹A中?


我假设您希望每个文件都在一个根目录中,而不是在子文件夹中?那么A \ File1,A \ File2,而不是A \ Folder2 \ File1?
加拿大卢克,

@Luke-是的,知道了。文件夹和子文件夹中存在的每个文件都移到了根目录。
Rook

Answers:


12

我的原始帖子忽略了在move命令中包含文件扩展名。 %~ni只返回基本名,您需要使用它%~nxi来获取文件名和扩展名!希望您没有在我的帐户上破坏文件名!(

从命令提示符:

cd /d C:\Path\To\A
for /r %i in (*) do @move "%i" "%~nxi"

如果以后需要清理空文件夹,请执行以下操作:

for /d %i in (*) do @rd /s /q "%i"

现在,如果您有任何文件名冲突,则表示您自己。您可以将/y参数添加到move命令中(在之前"%i")以强制覆盖。如果您需要其他功能,则需要另一个程序,该程序可以自动为您重命名所有内容。

另外,如果要在批处理文件中使用它,请将所有更改%%%


不知道FOR /r-太好了!
丹尼尔·贝克

哇,太棒了 我屈服于你的命令。
Mokubai

2

创建一个文件夹并将所有其他文件夹复制到其中,然后右键单击该文件夹并选择“ 搜索”。在搜索框中输入*.*

这将列出所有文件和文件夹。在根目录中选择所需的所有文件,然后剪切它们。导航到您的根目录,然后将所有文件粘贴到该目录中。


在我的cmd中,搜索不作为命令存在。
Rook 2012年

理查德不是在谈论命令。编辑了他的答案,使其更清晰。
艾萨克·拉比诺维奇

0

安装Cygwin(或Windows的另一个Unix环境)并运行以下命令:

cd A
find . -type f -exec mv {} . \;

根据您的mvfind版本,您可能需要使用find . -type f -exec mv -t . {} \;
丹尼尔·贝克

1
对于许多Unix工具的本机Windows端口,我喜欢unxutils.sourceforge.net
Dennis

@Dennis UnxUtils很不错,很遗憾,现在已经很老了。如果您目前正在使用它们,可以验证我的帖子对它们有用吗?mkdir -p a/a1 a/a2 a/a3 b/b1 b/b2 b/b3 ctouch a/a1/foo a/a1/bar a/a2/baz a/a3/qux b/b1/quux b/b2/quuux b/b3/quuuux c/ccc准备。
丹尼尔·贝克

-1可能是正确的,但是我在询问如何使用cmd进行操作。
Rook

@Daniel毫无疑问,它们已经老了,我拖了他们很多年了。我刚刚尝试过, find . -type f -exec mv {} . ;而且看起来还可以。
丹尼斯,
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.