排除文件和设置
当你指定迁移 .xml 文件(MigApp.xml、Migdocs 和 MigUser.xml)时,用户状态迁移工具 (USMT) 5.0 就会像 USMT 将迁移哪些内容?中所讨论的那样,迁移列出的设置和组件。你可以创建自定义 .xml 文件以进一步指定迁移中应包含或排除的内容。此外,你可以创建 Config.xml 文件从迁移中排除整个组件。但是,你不能使用迁移 .xml 文件或 Config.xml 文件排除用户。在 ScanState 工具的命令行中使用用户选项是指定包含和排除具体用户的唯一方法。有关详细信息,请参阅 ScanState 语法。
本主题内容:
创建自定义 .xml 文件。你可以使用以下元素指定要排除的内容:
<include> 和 <exclude>:你可以使用 <include> 和 <exclude> 元素有条件地排除对象。例如,你可以迁移 C:\ 驱动器中除任何 .mp3 文件之外的所有文件。重要的是记住将冲突和优先级应用到这些元素上。
<unconditionalExclude>:你可以使用 <unconditionalExclude> 元素对数据进行全局排除。该元素的优先级高于 .xml 文件中的所有包含和排除规则。因此,无论 .xml 文件中是否有任何其他 <include> 规则,该元素仍会对对象进行排除。例如,你可以排除计算机上所有 .mp3 文件或 C:\UserData 下的所有文件。
创建 Config.xml 文件:你可以创建并修改 Config.xml 文件以从迁移中排除整个组件。例如,可以使用该文件为某个默认应用程序排除设置。此外,为排除迁移到运行 Windows 的计算机的操作系统设置,创建和修改 Config.xml 文件是唯一方法。使用此文件排除组件比修改迁移 .xml 文件更容易,因为你不必熟悉迁移规则和语法。
创建自定义 .xml 文件
我们建议你创建自定义 .xml 文件,而不是修改默认的迁移 .xml 文件。如果你使用自定义 .xml 文件,则可以将你的修改与默认 .xml 文件保持分离,这样就更容易跟踪你的修改。
<include> 和 <exclude>
迁移 .xml 文件(MigApp.xml、MigDocs 和 MigUser.xml)中包含 <component> 元素,该元素通常代表自包含的组件或应用程序(例如 Microsoft® Office Outlook® 和 Word)。为排除与这些组件关联的文件和注册表设置,请使用 <include> 和 <exclude> 元素。例如,你可以使用这些元素迁移带有模式 X 的所有文件和设置,并排除带有模式 Y 的文件和设置,其中 Y 比 X 更加具体。有关这些元素的语法,请参阅 USMT XML 参考。
![]() |
---|
如果你指定了 <exclude> 规则,则应始终指定对应的 <include> 规则。否则,如果你不指定 <include> 规则,特定的文件和设置则不会包括进来。而会排除在迁移之外。因此,单独的 <exclude> 规则是不必要的。 |
示例 1:如何迁移 C:\ 中除 .mp3 文件之外的所有文件
示例 2:如何迁移 C:\Data 中除 C:\Data\tmp 文件夹之外的所有文件
示例 3:如何排除文件夹中的文件但包含所有子文件夹
示例 4:如何从特定文件夹中排除文件
示例 5:如何排除任意位置的文件
示例 1:如何迁移 C:\ 中除 .mp3 文件之外的所有文件
下述 .xml 文件将迁移 C:\ 中除 .mp3 文件之外的所有文件。
<migration urlid="https://www.microsoft.com/migration/1.0/migxmlext/mp3files">
<!-- This component migrates all files except those with .mp3 extension-->
<component type="Documents" context="UserAndSystem">
<displayName _locID="miguser.sharedvideo">MP3 Files</displayName>
<role role="Data">
<rules>
<include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
<objectSet>
<pattern type="File">C:\* [*]</pattern>
</objectSet>
</include>
<exclude>
<objectSet>
<pattern type="File">C:\* [*.mp3]</pattern>
</objectSet>
</exclude>
</rules>
</role>
</component>
</migration>
示例 2:如何迁移 C:\Data 中除 C:\Data\tmp 文件夹之外的所有文件
下述 .xml 文件将迁移 C:\Data 中除 C:\Data\tmp 中的文件和子文件夹之外的所有文件和子文件夹。
<migration urlid="https://www.microsoft.com/migration/1.0/migxmlext/test">
<component type="Documents" context="System">
<displayName _locID="miguser.sharedvideo">Test component</displayName>
<role role="Data">
<rules>
<include>
<objectSet>
<pattern type="File">C:\Data\* [*]</pattern>
</objectSet>
</include>
<exclude>
<objectSet>
<pattern type="File"> C:\Data\temp\* [*]</pattern>
</objectSet>
</exclude>
</rules>
</role>
</component>
</migration>
示例 3:如何排除文件夹中的文件但包含所有子文件夹
下述 .xml 文件将迁移 C:\EngineeringDrafts 中的所有子文件夹,但排除 C:\EngineeringDrafts 中的所有文件。
<migration urlid="https://www.microsoft.com/migration/1.0/migxmlext/test">
<component type="Documents" context="System">
<displayName>Component to migrate all Engineering Drafts Documents without subfolders</displayName>
<role role="Data">
<rules>
<include>
<objectSet>
<pattern type="File"> C:\EngineeringDrafts\* [*]</pattern>
</objectSet>
</include>
<exclude>
<objectSet>
<pattern type="File"> C:\EngineeringDrafts\ [*]</pattern>
</objectSet>
</exclude>
</rules>
</role>
</component>
</migration>
示例 4:如何从特定文件夹中排除文件
下述 .xml 文件将迁移 C:\EngineeringDrafts 中除 C:\Data\tmp 中 Sample.doc 文件之外的所有文件和子文件夹。
<migration urlid="https://www.microsoft.com/migration/1.0/migxmlext/test">
<component type="Documents" context="System">
<displayName>Component to migrate all Engineering Drafts Documents except Sample.doc</displayName>
<role role="Data">
<rules>
<include>
<objectSet>
<pattern type="File"> C:\EngineeringDrafts\* [*]</pattern>
</objectSet>
</include>
<exclude>
<objectSet>
<pattern type="File"> C:\EngineeringDrafts\ [Sample.doc]</pattern>
</objectSet>
</exclude>
</rules>
</role>
</component>
</migration>
示例 5:如何排除任意位置的文件
要排除 C: 驱动器任何位置下的 Sample.doc 文件,请使用 <pattern> 元素。如果 C: 驱动器中存在多个同名文件,则将排除所有这些文件。
<pattern type="File"> C:\* [Sample.doc] </pattern>
要排除计算机任何驱动器下的 Sample.doc 文件,请使用 <script> 元素。如果存在多个同名文件,则将排除所有这些文件。
<script>MigXmlHelper.GenerateDrivePatterns("* [sample.doc]", "Fixed")</script>
<unconditionalExclude>
如果要从迁移中排除一种文件类型,则无论其他 <include> 或 <exclude> 规则如何,你都可以使用 <unconditionalExclude> 元素。该元素将从所有组件中全局排除对象。例如,如果要从计算机中排除所有 .mp3 文件,则请使用此元素。或者,如果要使用其他方法备份 C:\UserData,则你可以从迁移中排除整个文件夹。但是,请谨慎使用此元素,因为如果你排除了一个应用程序需要的文件,则该目标计算机上的应用程序可能无法正常工作。有关该元素的语法,请参阅 USMT XML 参考。
示例 1:如何排除所有 .mp3 文件
示例 2:如何排除特定驱动器上的所有文件
示例 3:如何排除注册表项
示例 4:如何排除 C:\Windows 和 C:\Program Files
示例 1:如何排除所有 .mp3 文件
下述 .xml 文件从迁移中排除了所有 .mp3 文件:
<migration urlid="https://www.microsoft.com/migration/1.0/migxmlext/excludefiles">
<component context="System" type="Documents">
<displayName>Test</displayName>
<role role="Data">
<rules>
<unconditionalExclude>
<objectSet>
<script>MigXmlHelper.GenerateDrivePatterns ("* [*.mp3]", "Fixed")</script>
</objectSet>
</unconditionalExclude>
</rules>
</role>
</component>
</migration>
示例 2:如何排除特定驱动器上的所有文件
下述 .xml 文件仅排除了位于 C: 驱动器上文件。
<migration urlid="https://www.microsoft.com/migration/1.0/migxmlext/allfiles">
<component type="Documents" context="System">
<displayName>Test</displayName>
<role role="Data">
<rules>
<unconditionalExclude>
<objectSet>
<pattern type="File">c:\*[*]</pattern>
</objectSet>
</unconditionalExclude>
</rules>
</role>
</component>
</migration>
示例 3:如何排除注册表项
下述 .xml 文件会无条件地排除 HKey_Current_User 注册表项及其所有子项。
<?xml version="1.0" encoding="UTF-8"?>
<migration urlid="https://www.microsoft.com/migration/1.0/migxmlext/miguser">
<component type="Documents" context="User">
<displayName>Test</displayName>
<role role="Data">
<rules>
<include>
<objectSet>
<pattern type="Registry">HKCU\testReg[*]</pattern>
</objectSet>
</include>
<unconditionalExclude>
<objectSet>
<pattern type="Registry">HKCU\*[*]</pattern>
</objectSet>
</unconditionalExclude>
</rules>
</role>
</component>
</migration>
示例 4:如何排除 C:\Windows 和 C:\Program Files
下述 .xml 文件会无条件地排除 C:\Windows 和 C:\Program Files 系统文件夹。请注意,将不会迁移所有 *.docx、*.xls 和 *.ppt 文件,因为 <unconditionalExclude> 元素的优先级高于 <include> 元素。
<?xml version="1.0" encoding="UTF-8"?>
<migration urlid="https://www.microsoft.com/migration/1.0/migxmlext/miguser">
<component type="Documents" context="System">
<displayName>Test</displayName>
<role role="Data">
<rules>
<include>
<objectSet>
<script>MigXmlHelper.GenerateDrivePatterns ("* [*.doc]", "Fixed")</script>
<script>MigXmlHelper.GenerateDrivePatterns ("* [*.xls]", "Fixed")</script>
<script>MigXmlHelper.GenerateDrivePatterns ("* [*.ppt]", "Fixed")</script>
</objectSet>
</include>
<unconditionalExclude>
<objectSet>
<pattern type="File">C:\Program Files\* [*]</pattern>
<pattern type="File">C:\Windows\* [*]</pattern>
</objectSet>
</unconditionalExclude>
</rules>
</role>
</component>
</migration>
创建 Config.xml 文件
如果要从迁移中排除组件,可以创建并修改 Config.xml 文件。使用此文件排除组件比修改迁移 .xml 文件更容易,因为你不必熟悉迁移规则和语法。Config.xml 是可选文件,你可以使用 /genconfig 命令行选项及 ScanState 工具创建它。例如,可以使用 Config.xml 文件排除默认应用程序的设置。此外,为排除迁移到运行 Windows 的计算机的操作系统设置,创建和修改该文件是唯一方法。
**要排除默认应用程序的设置:**为 Config.xml 文件 <Applications> 部分下的应用程序指定
migrate="no"
。要排除操作系统设置:为 <WindowsComponents> 部分下的设置指定
migrate="no"
。要排除“我的文档”:为 <Documents> 部分下的“我的文档”指定
migrate="no"
。请注意,.xml 文件中的任何 <include> 规则仍然有效。例如,如果你的规则是包含“我的文档”中的所有 .docx 文件,则仅迁移 .docx 文件,而不会迁移其他文件。
有关详细信息,请参阅 Config.xml 文件。
![]() |
---|
若要从 Config.xml 文件中排除某个组件,请将“migrate”值设置为“no”。从 Config.xml 文件中删除 XML 标记并不会将该组件从你的迁移中排除。 |