批处理语言如何区分系统文件和用户文件?
How to differentiate between system and user files in the batch language?
我想复制C盘所有的文本文件,但是程序要避开系统自带的文本文件,只复制用户自己创建的文本文件。
是否有内置方法可以做到这一点,或者我需要发挥创意吗?如果是这样,你会怎么做?我想将它保留在批处理中,而不涉及 powershell 或类似的东西。
我想过使用创建日期来判断一个文件是否是系统文件,但一直没有奏效。
您可以使用 dir
命令生成所有系统文件的列表。所以
dir /b /as > %USERPROFILE%\excluded_Files.txt
将从该目录生成系统文件列表。
按照描述使用 xcopy here 您现在可以将所有文件从一个目录复制到另一个目录,不包括系统文件。
xcopy 命令应该是这样的:
xcopy C:\firstDirectory\*.txt C:\secondDirectory /EXCLUDE:%USERPROFILE%\excluded_Files.txt
编辑
所以您的代码会将所有 rtf 和 txt 文件从整个 C 驱动器复制到驱动器 D 文件夹 E。
使用我的方法的批处理文件如下所示:
@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 命令的输出重定向到用户配置文件中的一个文件(通常是 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 文件相同的副本。
我想复制C盘所有的文本文件,但是程序要避开系统自带的文本文件,只复制用户自己创建的文本文件。
是否有内置方法可以做到这一点,或者我需要发挥创意吗?如果是这样,你会怎么做?我想将它保留在批处理中,而不涉及 powershell 或类似的东西。
我想过使用创建日期来判断一个文件是否是系统文件,但一直没有奏效。
您可以使用 dir
命令生成所有系统文件的列表。所以
dir /b /as > %USERPROFILE%\excluded_Files.txt
将从该目录生成系统文件列表。
按照描述使用 xcopy here 您现在可以将所有文件从一个目录复制到另一个目录,不包括系统文件。
xcopy 命令应该是这样的:
xcopy C:\firstDirectory\*.txt C:\secondDirectory /EXCLUDE:%USERPROFILE%\excluded_Files.txt
编辑
所以您的代码会将所有 rtf 和 txt 文件从整个 C 驱动器复制到驱动器 D 文件夹 E。
使用我的方法的批处理文件如下所示:
@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 命令的输出重定向到用户配置文件中的一个文件(通常是 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 文件相同的副本。