# 批量扫描的工作原理

QV2QS 通过递归扫描目录自动发现 QlikView 项目。

## 递归目录扫描

QV2QS 递归扫描批处理目录，遍历每个子文件夹以查找 QlikView 项目文件。扫描器会同时查找 `.qvw` 和 `.qvf` 文件。QlikView 12.70 及更高版本默认可以将文档保存为 `.qvf`，因此扫描程序会检查这两种扩展名，以避免在格式已更改的环境中遗漏文件。有关 QVW 和 QVF 格式的更多详细信息，请参阅[系统要求](https://help.qlik.com/zh-CN/migration/Content/Qv2qsMigration/getting-started/system-requirements.htm)。

对于找到的每个 QVW 或 QVF 文件，QV2QS 都会在同一目录中查找匹配的 PRJ 工件：

* PRJ 文件夹 (`<Name>-prj/`)
* PRJ zip 文件 (`<Name>-prj.zip`)

名称必须匹配（不区分大小写）。如果同一个源文件同时存在 PRJ 文件夹和 PRJ zip，则文件夹优先。没有匹配 PRJ 工件的源文件将在扫描结果中报告为缺失。

QV2QS 在扫描期间会跳过常见的非项目目录：`.git`、`.svn`、`.hg`、`node_modules`、`build`、`dist`、`venv`、`__pycache__` 以及以句点开头的目录。如果输出路径位于扫描根目录内，输出目录也会被排除。

结果按相对目录路径和文件名排序，以确保顺序可预测。

## 扫描多个目录

使用分号分隔路径以扫描多个目录。QV2QS 会自动对嵌套路径进行去重。如果一个路径是另一个路径的子目录，则仅扫描父路径。

```
QV2QS.exe --batchDir "C:\Projects\Region1;C:\Projects\Region2" --outputDir C:\Output --unbuildOnly
```

## 在 Web UI 中扫描

Web UI 在项目步骤中提供了可视化批量扫描工作流。在批处理目录字段中输入一个或多个文件夹路径，然后单击 扫描文件夹。扫描结果显示在包含两个视图的模态框中：

* 树形视图 — 支持展开/折叠的分层文件夹树。每个文件夹都会显示 QVW 总数、已配对项目数以及缺失的 PRJ 文件夹数。使用全部展开和全部折叠来浏览大型树形结构。
* 列表视图 — 具有相同列的扁平表格，按文件夹路径排序。底部的汇总行显示总计。

模态框页眉显示 KPI 计数：总配对数、缺失 PRJ 和总 QVW 数。当启用 PRJ 自动生成时，缺失的 PRJ 条目会显示自动生成指示符。

使用搜索字段按名称或路径筛选结果。使用复选框选择特定子文件夹，以仅将这些文件夹包含在批处理中。未选择任何项将包含所有文件夹。单击 接受 以应用所选内容（当所选内容与原始扫描不同时，按钮将变为 接受更改）。模态框可以最大化，以便全屏查看大型目录树。

## 了解更多

* [自动生成 PRJ](https://help.qlik.com/zh-CN/migration/Content/Qv2qsMigration/batch-conversion/automatic-prj-generation.htm)
* [平行执行](https://help.qlik.com/zh-CN/migration/Content/Qv2qsMigration/batch-conversion/parallel-execution.htm)
* [输出结构和应用程序命名](https://help.qlik.com/zh-CN/migration/Content/Qv2qsMigration/batch-conversion/output-structure-and-app-naming.htm)