1

ユーザー フレンドリーなドラッグ アンド ドロップ方法で CSV ファイルから引用符を削除する powershell スクリプトを作成する必要があります。このページの厚意により、スクリプトの基本を説明しています。

http://blogs.technet.com/b/heyscriptingguy/archive/2011/11/02/remove-unwanted-quotation-marks-from-csv-files-by-using-powershell.aspx

そして、このスタックオーバーフローの質問のおかげで、.ps1ファイルをドラッグアンドドロップできるようになりました。

Powershell スクリプトへのドラッグ アンド ドロップ

回答の作成者は、単一のファイル、多数のファイル、および多数のファイルを含むフォルダーをドロップするのと同じくらい簡単であることを暗示しています。ただし、ソースファイルに書き戻すこともできる方法でこれを理解する必要はまだありません。これが私の現在のコードです:

Param([string[]]$file)
(gc $file) | % {$_ -replace '"', ""} | out-file C:\Users\pfoster\Desktop\Output\test.txt -Fo -En ascii

現在、これは単一のファイルのみを受け入れ、ソース ファイルの種類に関係なく、結果を txt として指定されたファイルに出力します (これを CSV に簡単に変更できますが、スクリプトでソースをミラーリングしたいと思います)。理想的には、ファイルとフォルダーを受け入れ、ソース ファイルを書き換えてほしいと思います。これには get-ChildItem が関係していると感じていますが、現在のシナリオでそれを実装する方法がわかりません。out-file $file も試しましたが、どちらもうまくいきませんでした。

助けてくれてありがとう!

4

1 に答える 1

0

変更されたコンテンツを元のファイルに書き戻すには、次のようにしてください。

foreach ($file in $ARGS) {
  (Get-Content $file) -replace '"', '' | Out-File $file -Encoding ASCII -Force
}

foreach inパイプラインの複数の場所でファイル名が必要なため、ループを使用します。サブシェルでコンテンツを読み取り、変更されたコンテンツをOut-Fileコマンドレットにパイプすると、コンテンツが既に読み取られた後にのみ出力ファイルが書き込まれます。

リダイレクト演算子 ( ) は使用しないでください(Get-Content $file) >$file。最初に書き込み用にファイルが開かれ (効果的に切り捨てられ)、その後、空になったファイルからコンテンツが読み取られるためです。

各ファイルは、処理されてディスクに書き戻される前に RAM に完全に読み込まれるため、この方法では大きなファイルで問題が発生する可能性があることに注意してください。ファイルが使用可能な RAM に収まらない場合、コンピューターはスワッピングを開始するため、パフォーマンスが大幅に低下します。

于 2013-10-16T17:00:32.413 に答える