2017-11-29 11 views
0

現在、フォルダ内のファイルのグループをループするスクリプトがあります。それぞれのファイルを開き、新しいファイル名を入力して名前を変更します。私はその後、1つの列に古い名前と2番目の列にファイルの新しい名前を持つCSVファイルを作成しようとしています。powershellループから別の列のCSVファイルへの追加コンテンツ

#[void][Reflection.Assembly]::LoadWithPartialName('Microsoft.VisualBasic') 
Add-Type -AssemblyName Microsoft.VisualBasic 

$folderpath = 'C:\Scans\docs\' '# 
$items = Get-ChildItem -Recurse $folderpath *.pdf 
$newFileName = "" 
$counterID = 0 
$amountOfScans = $items.Length 

foreach($i in $items) { 
    Start-Process ((Resolve-Path ("$folderpath$i")).Path) 

    Start-Sleep -Seconds 1 

    $counterID++ 

    $newFileName = [Microsoft.VisualBasic.Interaction]::InputBox("Enter the new file name $counterID/$amountOfScans :", $i) 

    Stop-Process -Name "Acro*" 

    Add-Content -Path 'C:\Scans\fileNames.csv' -Value "$i","$newFileName " 

    Rename-Item $i.FullName ("$newName.pdf") 
} 

これは、作業を行いますが、それは次のように最初の列だけでcsvファイルに出力します。この出力を作るにはどうすればよい

 
old file name 1 
new file name 1 
old file name 2 
new file name 2

 
old file name 1 | new file name 1 
old file name 2 | new file name 2

答えて

1

あなたは、配列を渡しています。 CSVはテキストファイル以外のものではないので、行全体を単一の文字列として渡す必要があります。

Add-Content -Path 'C:\Scans\fileNames.csv' -Value "`"$i`",`"$newFileName`"" 
+0

ありがとうございましたこれは私が探していたものです: –

+0

うれしい私は助けることができました。あなたの質問を解決した場合は、これを答えとして記入してください。 – Robbert

関連する問題