首页 > 解决方案 > 将 bat 中的标题行插入 csv 文件

问题描述

我创建了一个创建 csv 文件的 bat 文件,请参见下文

@echo off
echo %date%,%time%,%computername%,%username% >> %random%.csv

这将生成包含以下数据的 csv 文件:

29/05/2021,15:35:31.10,PC9083,fmartin

但我需要 bat 文件来包含这些标题,例如日期、时间、主机、名称(如果可能),例如

Date,Time,Host,Name
29/05/2021,15:35:31.10,PC9083,fmartin

关于如何做到这一点的任何想法?任何信息,将不胜感激

非常感谢约翰

标签: batch-file

解决方案


如果您想继续前进并使用 PowerShell,这将是可行的。使用-UseQuotes AsNeeded需要 PowerShell Core 7+。如果您删除-UseQuotes AsNeeded它,它将适用于 Windows PowerShell 5.1,但每个字段都会被引用。

New-Object psobject -Property ([ordered]@{"Date"=(Get-Date).ToString('dd/MM/yyyy');
    "Time"=(Get-Date).ToString('HH:mm:ss.ff');"Host"=$Env:COMPUTERNAME;"Name"=$Env:USERNAME}) |
    Export-Csv -Path '.\so-createcsv.csv' -Encoding ascii -NoTypeInformation -UseQuotes AsNeeded

如果您必须将代码保存在 cmd.exe 批处理文件脚本中,则可以使用此方法。用于pwsh.exePowerShell Core 6+。用于powershell.exeWindows PowerShell 5 或更早版本。

pwsh.exe -NoLogo -NoProfile -Command ^
    "New-Object psobject -Property ([ordered]@{""Date""=(Get-Date).ToString('dd/MM/yyyy');""Time""=(Get-Date).ToString('HH:mm:ss.ff');""Host""=$Env:COMPUTERNAME;""Name""=$Env:USERNAME}) |" ^
        "Export-Csv -Path '.\so-createcsv.csv' -Encoding ascii -NoTypeInformation -UseQuotes AsNeeded"

推荐阅读