我正在寻找一个powershell脚本,提示用户选择多个文件。确认选择后,我想将所有选定的文件合并到一个文件中。 这是我到目前为止可以管理的内容
Function Get-FileName($initialDirectory)
{
[System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms") | Out-Null
$OpenFileDialog = New-Object System.Windows.Forms.OpenFileDialog
$OpenFileDialog.initialDirectory = $initialDirectory
$OpenFileDialog.filter = "TXT (*.txt;*.log)| *.txt;*.log"
$openFileDialog.MultiSelect = $true
$OpenFileDialog.ShowDialog() | Out-Null
$OpenFileDialog.FileNames
}
$inputfiles = Get-FileName "C:\temp"
$inputfiles
cmd /c copy /b $inputfiles out.txt
这些文件通常是大文本/日志文件,每个文件中有数百万行,到目前为止,通过cmd复制是我知道组合大文件的最快方式。
当前脚本仅复制$inputfiles
中的第一个文件。我怎样才能使这个工作组合所有文件?
答案 0 :(得分:0)
这是一个如何做到的简单示例。我用out-gridview取代了你的openfiledialog
#Get files and prompt them in Grid-View
$Files = Get-ChildItem -Path 'C:\temp\SC Test' -Recurse -Include *.txt, *.log | Select-Object -Property Name, DirectoryName, FullName | Out-GridView -PassThru -Title "select files to merge"
#path for the new file with the content
$MergedFilePath = "C:\temp\merged.txt"
#Loop selected files from gridview
Foreach($File in $Files){
#Get text from file and write the text to the new file
Get-Content -Path $File.FullName | Out-File -FilePath $MergedFilePath -Encoding utf8 -Append
}