如何通过命令行将目录结构中的所有 .txt 文件移动到另一个目录?

如何通过命令行将目录结构中的所有 .txt 文件移动到另一个目录?

我有一个相当广泛的目录结构:

c:\foo
  \foo\1
  \foo\1\doc1
  \foo\1\doc2
  \foo\2
  \foo\2\doc1
  \foo\2\doc2
  ...
  \foo\10\docX

我想将所有带有 .txt 扩展名的文件移动(而不仅仅是复制)到另一个目录c:\textfiles

我想通过命令行(常规命令行,而不是 Powershell)来执行此操作,可能在批处理文件中。

我尝试过该move命令,但它似乎只对当前目录中的文件有效。我也尝试过xcopy,但它在复制完成后不会删除源上的文件。

答案1

从:如何使用 CMD 将所有子目录中具有特定扩展名的所有文件移动到其父目录?

此命令将使用 Windows 7 中的 cmd 将所有 pdf 文件从源目录递归复制到目标目录 - 经过测试且有效

对于 /r "c:\source_directory\" %%x 在 (*.pdf) 中移动 "%%x" "c:\target_directory\"

也可以看看:

windows – 将多个子文件夹中的所有文件移动到父文件夹中 - 超级用户

将多个文件从子文件夹复制到单个文件夹 - Microsoft Community

答案2

同步

rsync是一个可用的工具窗户也一样,通常用于远程同步目录...但它在本地目录上也能正常工作...如其自身描述中所述

一种快速、多功能、远程(和当地) 文件复制工具

由此回答在 unix.stackexchange 上...

rsync -a --prune-empty-dirs --include '*/' --include '*.txt' --exclude '*' source/ target/

笔记存在一个选项可以从源中删除文件,您可以在命令行中包含该选项,我认为您搜索的是--remove-source-files,但是仔细检查。另一个你可能觉得有用的选项是-n

    -n, --dry-run               perform a trial run with no changes made
    --remove-source-files       sender removes synchronized files (non-dir)

寻找

find是您可以在bashWindows 下的 shell 中找到的另一个工具,也是已编译的可执行文件(gnu查找工具)... 以下行在 Linux 下有效,但您可以修改该cp语句以符合您的系统规范。从另一个回答...

 find . -name '*.txt' -exec cp --parents \{\} /target \; 

Windows 等效于find

来自另一个问题/答案对于批处理脚本,您可以使用这个提示...

 dir <drive: [drive:]> /s | findstr /i <pattern>

...当然,如果他们觉得有必要力量壳牌公司有理由预期环境应该有更简单的方法来做到这一点......

但也许下面的一个对于您的脚本来说是一个足够简单的起点:

dir c:\foo /s *.txt

相关内容