You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell批量处理TXT文件时如何保留原文件名保存?

批量打乱TXT文件内容并覆盖原文件的PowerShell修正代码

你的批量处理代码存在两个核心问题:

  1. 直接用Get-Content -Path C:\Folder1\*.txt -Raw会把所有TXT文件的内容合并后再打乱,最终输出的是所有文件内容的混合结果,而非逐个处理单个文件
  2. Out-File -FilePath C:\Folder1\-W是错误语法,-W不是合法参数,也未指定正确的输出文件路径

以下是修正后的代码,实现逐个处理文件夹内所有TXT文件,打乱内容后覆盖原文件:

Get-ChildItem -Path C:\Folder1\*.txt | ForEach-Object {
    # 读取当前文件的完整内容
    $originalContent = Get-Content -Path $_.FullName -Raw
    # 按空白符分割内容、随机排序后重新拼接
    $shuffledContent = ($originalContent -split "\s+" | Sort-Object { Get-Random }) -join ' '
    # 将打乱后的内容写回原文件(覆盖)
    $shuffledContent | Out-File -FilePath $_.FullName -Encoding Default
}

关键说明:

  • Get-ChildItem遍历目标文件夹下的每个TXT文件,确保逐个处理
  • $_.FullName获取当前文件的完整路径,保证读取和写入的是同一个文件
  • 添加-Encoding Default是为了避免默认编码(UTF-16)导致的乱码问题,可根据文件实际编码调整(比如-Encoding UTF8)
  • 若想保留原文件的行结构(只打乱每行的顺序,而非所有内容的单词顺序),可修改逻辑为按行分割:
    Get-ChildItem -Path C:\Folder1\*.txt | ForEach-Object {
        $originalLines = Get-Content -Path $_.FullName
        $shuffledLines = $originalLines | Sort-Object { Get-Random }
        $shuffledLines | Out-File -FilePath $_.FullName -Encoding Default
    }
    

注意:处理前建议先备份所有TXT文件,避免内容意外丢失。

内容的提问来源于stack exchange,提问作者Hellena Crainicu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 14:40:33