我希望复制C盘上的所有文本文件,但程序需要避免作为系统一部分的文本文件,并且只复制用户创建的文本文件。
是否有内置方法可以做到这一点,还是我需要发挥创意?如果是这样,你会怎么做呢?我想将它保持在批量内,而不涉及PowerShell或类似的东西。
我考虑过使用创建日期来确定文件是否是系统文件,但这并不是一直有效。
答案 0 :(得分:0)
您可以使用dir
命令生成所有系统文件的列表。所以
dir /b /as > %USERPROFILE%\excluded_Files.txt
将从该目录生成系统文件列表。
按照here所述使用xcopy,您现在可以将所有文件从一个目录复制到另一个目录,不包括系统文件。
xcopy命令应该是这样的:
xcopy C:\firstDirectory\*.txt C:\secondDirectory /EXCLUDE:%USERPROFILE%\excluded_Files.txt
因此,您的代码会将所有rtf和txt文件从整个C驱动器复制到Drive D文件夹E。
使用my方法的批处理文件如下所示:
@echo off
cd /d C:\
dir /b /as /s > %USERPROFILE%\excluded_Files.txt
xcopy C:\*.rtf D:\E /EXCLUDE:%USERPROFILE%\excluded_Files.txt /s
xcopy C:\*.txt D:\E /EXCLUDE:%USERPROFILE%\excluded_Files.txt /s
说明:
@echo off
禁止在执行前显示的命令的冗余输出
cd /d C:\
将当前执行目录更改为C驱动器的根目录。添加/d
是为了进行潜在的变更
dir /b /as /s > %USERPROFILE%\excluded_Files.txt
将dir命令的输出重定向到userprofile中的文件(通常为C:\Users\yourUserName
)。交换机/b
仅显示文件名,而不显示大小,创建日期等。/as
仅列出系统文件,/s
使dir命令以递归方式通过所有目录。
xcopy C:\*.rtf D:\E /EXCLUDE:%USERPROFILE%\excluded_Files.txt /s
会将所有rtf文件从C:\复制到D:\ E并从之前创建的列表中排除所有文件(包含所有系统txt 和 rtf文件(以及其他文件) ))。 /s
使得xcopy与dir一样递归地工作
下一行是与txt文件相同的副本。