Powershell脚本,用于解压缩多个文件并根据文件名和部分文件名创建.CSV索引

时间:2015-09-03 13:27:06

标签: powershell csv

我正在使用PS脚本来解压缩目录中的所有文件,然后根据每个文件的完整文件路径创建一个.CSV索引文件,并从文件名的各个部分中提取关键字。

E.g。

  • 目录包含:file1.zip,file2.zip等
  • 将所有内容解压缩到一个目录:file1_server_20150830, file1_server2_20150831,file2_server_20150829等 文件是二进制的(文件类型在Windows中显示“文件”,没有扩展名)
  • 使用完整路径和部分文件名创建index.csv。文件名使用下划线,如下所示:
    X:\文件夹\ file1_server_20150830,服务器,20150830
    X:\文件夹\ file1_server2_20150831,server2,20150831
    x:\ folder \ file2_server_20150829,server,20150831 ......

我是新手PS脚本编写者,所以到目前为止我的内容如下所示,注释行是我一直在交换和调整以尝试构建我的索引文件。

$path = "X:\backup\test\source"
$dest = “X:\backup\test\import”
$shell_app= New-Object -com shell.application
$files = Get-ChildItem -Path $path -filter *.zip -recurse

foreach($file in $files) {

  $zip_file = $shell_app.namespace($file.FullName)

  $copyHere = $shell_app.namespace($dest)

  $copyHere.Copyhere($zip_file.items())

}

Get-ChildItem -Path $dest | Get-ChildItem -Path $dest | ForEach-Object { $_.BaseName -Replace '[_]', ',' -Replace ' ', '' -Replace 'index', '' } |
Out-File 'X:\backup\test\import\index.txt'



#Get-childItem 'X:\backup\test\import\index.txt' | ForEach { 
#(Get-Content $_ | ForEach {$_ -replace '21148965A', 'X:\backup\test\import\21148965A'}) | Set-Content $_}


#$index2 = {Get-ChildItem -Path $dest | ForEach-Object { $_.BaseName -Replace '[_]', ',' -Replace ' ', '' -Replace 'import', '' }}

#Get-ChildItem -Path $dest | Select-Object DirectoryName, $index2 | Export-Csv -Path 'X:\backup\test\import\index.txt' -NoTypeInformation



#Out-File 'X:\backup\test\import\index.txt'

#Get-ChildItem -Path $dest | ForEach-Object { $_.BaseName -Replace '[_]', ',' -Replace ' ', '' -Replace 'import', '' } |  Out-File 'X:\backup\test\import\index.txt' 

0 个答案:

没有答案