我有3 .txt
个文件需要转换为.csv
。以下似乎有效,但我想知道是否有更清洁/更有效的方法来做到这一点?
$files = @("C:\AllAcctsLog.txt", "C:\WithAcctsLog.txt", "C:\WithoutAcctsLog.txt")
foreach($file in $files){
$filePath = Join-Path ([System.IO.FileInfo]$file).DirectoryName ([System.IO.FileInfo]$file).BaseName
Import-Csv $file -Delimiter ';' -Header (1..12) |
ConvertTo-Csv -NoTypeInformation | select -Skip 1 |
Set-Content ($filePath + '.csv')
}
我还需要压缩这3个.csv
文件,但我不知道如何使用我当前的实现。我应该将这些新的.csv
文件放入数组中,然后将其压缩到数组中吗?非常感谢任何建议。
答案 0 :(得分:0)
我可能会这样做:
$files = @("C:\AllAcctsLog.txt", "C:\WithAcctsLog.txt", "C:\WithoutAcctsLog.txt");
$outputFiles = @();
$archiveName = '"C:\archive.zip"';
$7Zip = 'C:\Program Files\7-Zip\7z.exe';
foreach($file in $files){
$filePath = Join-Path ([System.IO.FileInfo]$file).DirectoryName (([System.IO.FileInfo]$file).BaseName + '.csv');
$outputFiles += "`"$filePath`"";
Import-Csv $file -Delimiter ';' -Header (1..12) |
ConvertTo-Csv -NoTypeInformation | select -Skip 1 |
Set-Content $filePath;
}
$outputFiles = $outputFiles -join ' ';
&$7Zip a $archiveName $outputFiles
请注意,我更改了$filePath
的定义方式。