PowerShell不直接替换文件内容,但可批量修改文件名或文本内容。一、改文件名用Get-ChildItem配合-replace和Rename-Item;二、改文本内容用Get-Content -replace Set-Content;操作前建议预览、备份并测试。
powershell 本身不直接“替换文件内容”,但常被用来批量替换文件名中的文字,或替换文本文件内部的内容。这两类操作都属于广义的“文件替换”,但逻辑和命令完全不同,需先明确目标。
一、替换文件名中的特定文字(最常用)
适用于清理下载文件、统一命名、删除广告前缀等场景,比如把 【官网】报告_v2.txt 改成 报告_v2.txt。
- 在目标文件夹空白处按住 Shift + 右键 → 选择“在此处打开 PowerShell 窗口”
- 输入以下命令(以删除所有文件名中的
【官网】为例):
Get-ChildItem | ForEach-Object {
$newName = $_.Name -replace "【官网】", ""
Rename-Item $_.FullName $newName -WhatIf
}-
-WhatIf是预览模式,不会真正执行,确认列表无误后再删掉它重跑 - 若只想处理
.txt文件,加-Filter "*.txt":
Get-ChildItem -Filter "*.txt" | ForEach-Object { … }- 区分大小写?默认不区分;如需严格匹配,用
[regex]::Replace()或加正则标志(?i):
$_.Name -replace "(?i)oldtext", "newtext"
二、替换文本文件里的内容(非文件名)
适用于修改配置文件、日志、代码、CSV 等纯文本内容,比如把所有 http:// 换成 https://。
- 命令结构简洁:
(Get-Content "config.ini") -replace "http://", "https://" | Set-Content "config.ini"
- 注意事项:
-
Get-Content默认按行读取,-replace会全局生效(整文件) - 若文件较大,建议先备份:
Copy-Item "config.ini" "config.ini.bak" - 中文、特殊符号(如
·、—)可直接写入字符串,PowerShell 原生支持 UTF-16/UTF-8(保存时可用-Encoding Utf8显式指定)
-
示例(含编码与备份):
直播话术巡检系统(Windows版) — 实时语音转写、关键词检测、场景自动切换、告警推送、大屏可视化。支持 Windows VB-Cable 虚拟声卡音频采集,阿里云 ASR 实时识别。一键启动脚本,自动安装环境。
$filePath = "notes.md" $backupPath = "$filePath.bak" Copy-Item $filePath $backupPath (Get-Content $filePath -Raw) -replace "小番茄与火龙果-", "" | Set-Content $filePath -Encoding Utf8
-Raw参数确保一次性读完整个文件(避免换行符干扰多行匹配)
三、安全操作建议
- 先在测试文件夹里试运行,尤其涉及
-WhatIf和Set-Content - 避免在系统目录(如
C:\Windows)或程序安装目录直接操作,权限不足会报错 - 文件名含空格、括号、
[ ]等字符时,PowerShell 比 CMD 更稳定,无需额外转义 - 如遇 Unicode 符号无法输入(如某些全角标点),可查 Unicode 编码用
\uXXXX表示,例如·是\u00b7
$_.Name -replace "[\u00b7]", ""
不复杂但容易忽略细节。

















