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

如何通过PowerShell编程实现Excel另存为CSV(MS-DOS)格式?

PowerShell批量转换CSV为MS-DOS编码格式方案

实现逻辑

调用Excel COM组件执行和手动操作完全一致的另存为逻辑,其中Excel内置的xlCSVMSDOS格式枚举值为24,处理后文件和手动保存的效果完全一致,可直接导入ETL系统。

完整脚本

# 请修改以下两个路径为你的实际路径
$sourceDir = "C:\原始CSV文件所在目录"
$targetDir = "C:\处理后CSV输出目录"

# 自动创建输出目录
if (-not (Test-Path $targetDir)) {
    New-Item -ItemType Directory -Path $targetDir | Out-Null
}

# 初始化Excel实例,后台运行不弹窗
$excelApp = New-Object -ComObject Excel.Application
$excelApp.Visible = $false
$excelApp.DisplayAlerts = $false

# CSV(MS-DOS)对应的格式编号
$CSV_FORMAT = 24

# 批量处理所有csv文件
Get-ChildItem -Path $sourceDir -Filter "*.csv" | ForEach-Object {
    $savePath = Join-Path $targetDir $_.Name
    # 如需覆盖已存在的输出文件,可删除下方2行判断
    if (Test-Path $savePath) {
        return
    }
    $wb = $excelApp.Workbooks.Open($_.FullName)
    $wb.SaveAs($savePath, $CSV_FORMAT)
    $wb.Close()
}

# 清理Excel进程,避免后台残留
$excelApp.Quit()
[System.Runtime.InteropServices.Marshal]::ReleaseComObject($excelApp) | Out-Null
Remove-Variable excelApp

Write-Host "全部文件处理完毕,输出路径:$targetDir"

使用说明

  • 运行前请确保设备已安装Microsoft Excel
  • 将脚本开头的$sourceDir和$targetDir替换为你实际使用的文件夹路径
  • 若首次运行提示执行策略限制,可先执行命令Set-ExecutionPolicy RemoteSigned -Scope CurrentUser,输入Y确认后再运行脚本
  • 如需直接覆盖原始文件,将$targetDir设置为和$sourceDir相同即可

格式对比参考

  • 原始文件截图:原始文件
  • 处理后文件截图:处理后文件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 06:15:02