# PowerShell

# PowerShell 导出指定目录所有路径到 txt

> 使用方法：Win + X → 打开「Windows PowerShell」，把下面命令里的路径替换成你自己的，回车执行。

---

## 一、常用命令（4 种场景）

### ✅ 1. 递归：包含所有子文件夹（文件 + 文件夹）

```powershell
Get-ChildItem "D:\目标文件夹" -Recurse | Select-Object -ExpandProperty FullName | Out-File "D:\list.txt" -Encoding UTF8
```

参数说明：

| 参数 | 作用 |
| --- | --- |
| `-Recurse` | 遍历所有子目录 |
| `Select-Object -ExpandProperty FullName` | 只输出纯路径，不带表头，最干净 |
| `Out-File "D:\list.txt"` | 结果写入 txt 文件 |
| `-Encoding UTF8` | 防止中文乱码 |

---

### ✅ 2. 只要文件，不要文件夹

```powershell
Get-ChildItem "D:\目标文件夹" -File -Recurse | Select-Object -ExpandProperty FullName | Out-File "D:\list.txt" -Encoding UTF8
```

说明：`-File` 限定只取文件对象，排除目录。

---

### ✅ 3. 仅当前目录，不进子文件夹

```powershell
Get-ChildItem "D:\目标文件夹" | Select-Object -ExpandProperty FullName | Out-File "D:\list.txt" -Encoding UTF8
```

说明：去掉 `-Recurse` 即只扫描第一层。

---

### ✅ 4. 只导出文件夹（不含文件）

```powershell
Get-ChildItem "D:\目标文件夹" -Directory -Recurse | Select-Object -ExpandProperty FullName | Out-File "D:\list.txt" -Encoding UTF8
```

说明：`-Directory` 限定只取目录对象。

---

## 二、小提示

- **路径带空格**：一定要用英文双引号把路径包起来，例如 `"D:\My Folder"`。
- **不想覆盖旧文件**：把 `Out-File` 改成 `Out-File -Append`，会追加写入而不是清空重写。
- **想同时在控制台看到结果**：用 `Tee-Object` 替换 `Out-File`。

```powershell
Get-ChildItem "D:\目标文件夹" -Recurse | Select-Object -ExpandProperty FullName | Tee-Object "D:\list.txt" -Encoding UTF8
```

---

## 三、CMD 备选方案（更简单）

如果不熟悉 PowerShell，用 CMD 也能完成：

```cmd
dir "D:\目标文件夹" /s /b > D:\list.txt
```

- `/s`：包含子目录
- `/b`：只输出路径（bare 格式），不带表头和文件大小信息

> （注：部分内容由豆包 AI 生成）
