2017-08-24 17 views
1

私はE:\ MyFiles \とE:\ MyFiles \ Augustにファイルを持っています。 PowerShellを使用してファイルパスをcsvファイル(E:\ CSVPaths.csv)に保存しています。System.Object [] - ファイル名が同じ場合

これは私のスクリプトです:

両方のEで
$exclude = @(".html", ".tt", ".xaml", ".csproj", ".sln", ".xml", ".cmd", ".txt",".svn") 
"DirectoryPath, SourceFileName" | Out-File -FilePath "E:\CSVPaths.csv" -Encoding ASCII 
$table = (get-childitem -recurse "E:\MyFiles" -File -ErrorAction SilentlyContinue | Where-Object { $exclude -notcontains $_.Extension }).Fullname 
foreach ($row in $table) 
{ 
    $file=Get-ChildItem -recurse $row 
    $fileObject = new-object PSObject 
    $fileObject | add-member -membertype NoteProperty -name "DirectoryPath" -Value $file.DirectoryName 
    $fileObject | add-member -membertype NoteProperty -name "SourceFileName" -Value $file.Name 
    $newrow=$fileObject 
    Export-Csv "E:\CSVPaths.csv" -inputobject $newrow -append -Force 
} 

:\ MyFilesフォルダとE:8月フォルダ\ \ MyFilesフォルダ、同じ名前(:Audit_Report.csv例)を持つファイルがあります。以下のようになり、彼らはDirectoryPathSourceFileNameSystem.Object[]として保存されたCSVへのエクスポート中:

DirectoryPath  SourceFileName 

System.Object[]  System.Object[] 
E:\MyFiles\August Audit_Report.csv 

は、この問題を解決するのに役立ちます。

+0

_shell script_?あなたはPowreShellを意味しますか? – Clijsters

+0

@Clijsters:Powershell – user3189916

答えて

1

AFAICSの後に出力を得るためにループを使用する必要はありません。

$exclude = @(".html", ".tt", ".xaml", ".csproj", ".sln", ".xml", ".cmd", ".txt",".svn") 
"DirectoryPath, SourceFileName" | Out-File -FilePath "E:\CSVPaths.csv" -Encoding ASCII 

Get-ChildItem -recurse "E:\MyFiles" -File -ErrorAction SilentlyContinue | 
    Where-Object { $exclude -notcontains $_.Extension } | 
    Select-Object @{n="SoureFileName";e={$_.Name}},@{n="DirectoryPath";e={$_.DirectoryName}} | 
    Export-csv "E:\CSVPaths.csv" -Force -NoTypeInformation 
    # NB: The "-NoTypeInformation" is an assumption - remove if you what type info. 
+1

パーフェクト。素晴らしい仕事。ありがとうございました。 – user3189916

関連する問題