0

私は Powershell の初心者であり、Linux の bash スクリプトの経験が少しあります。サーバー上の社会保障番号を持つファイルのリストを取得する方法を探していました。私の研究でこれを発見し、自宅のコンピューターでテストしたときに望んでいたのとまったく同じように機能しましたが、私の仕事とExcelのテストドキュメントから結果が返されなかったという事実を除いて. PowerShell コマンドを使用して、さまざまな Office ドキュメントからも結果を取得する方法はありますか? このサーバーは、ほぼすべてが Word および Excel ファイルで、いくつかの PowerPoint が含まれています。

PS C:\Users\Stephen> Get-ChildItem -Path C:\Users -Recurse -Exclude *.exe, *.dll | `
Select-String "\d{3}[-| ]\d{2}[-| ]\d{4}"

Documents\SSN:1:222-33-2345
Documents\SSN:2:111-22-1234
Documents\SSN:3:111 11 1234

PS C:\Users\Stephen> Get-childitem  -rec | ?{ findstr.exe /mprc:. $_.FullName } | `
select-string "[0-9]{3}[-| ][0-9]{2}[-| ][0-9]{4}"

Documents\SSN:1:222-33-2345
Documents\SSN:2:111-22-1234
Documents\SSN:3:111 11 1234

4

2 に答える 2

1

PowerShell コマンドを使用して、さまざまな Office ドキュメントからも結果を取得する方法はありますか? このサーバーは、ほぼすべてが Word および Excel ファイルで、いくつかの PowerPoint が含まれています。

MS Office ファイルを操作する場合、COM インターフェイスを使用して必要な情報を取得するのが最善の方法です。

インターネット上には「初心者向け」のドキュメントがほとんどないため、Powershell を初めて使用する場合は、COM を学習するのに多少時間がかかることは間違いありません。

したがって、小さいものから始めることを強くお勧めします。

  • まず、 1 つのWord ドキュメントを開き、内容を文字列に読み込むことに焦点を当てます。
  • 準備が整ったら、関連情報の抽出に集中します ( Powershell の Match 演算子は非常に役立ちます) 。
  • 1 つの Word ドキュメントを操作できるようになったら、フォルダー内の *.docx という名前のすべてのファイルを見つけて、それらのプロセスを繰り返します。foreach ($file in (ls *.docx)) { # work on $file }

ここにいくつかの読み物があります (確かに、自動化された Excel グラフ作成ツールを構築しているため、これはすべて Excel 用ですが、このレッスンは Office アプリケーションの自動化に非常に役立ちます)

于 2013-12-06T07:00:02.597 に答える
0

これを docx と xlsx のみに制限したい場合は、プレーンな解凍を行い、XML タグを無視してコンテンツを検索することを検討することもできます (したがって、各数字の間に 1 つ以上の XML 要素を許可します)。

于 2013-12-07T11:22:17.283 に答える