2013-05-29 23 views
6

私はWindows 8プロを使用しており、私が望んでいることをしたいと思っています。ディレクトリ内の特定のタイプのすべてのファイルに対して1つのプログラムを実行したいだけです。平らな場所に木はありません。 Linuxでは、私は希望:Powershellを使用してディレクトリ内のすべてのファイルに対してプログラムを実行する方法

find . -name 'exec c:\user\local\bin\myprog {} \; 

私は文字通りなど政策上の問題、権限、に実行すると、私はこれを実現することができますいくつかの簡単な方法がありますが、パワーシェルと格闘カップルの時間を費やしてきましたか?

+0

'get-childItem'コマンドレットを試しましたか? 'Exec \t与えられた引数にコマンドレットを実行する 'というフラグがあります。これは役に立つかもしれません - http://windows-powershell-scripts.blogspot.com/2009/08/unix-linux-find-equivalent-in.html – Bill

答えて

14

これは、例えばfindを使用するよりも簡単ですが異なります。

Get-ChildItem -File | Foreach {c:\user\local\bin\myprog $_.fullname} 

コマンドラインでものを行うため、別名はこのもう少し簡潔を行うことができます。

ls -file | % {c:\user\local\bin\myprog $_.fullname} 

PowerShellがあるコマンドを好みますフォーカスが狭いですが、パイプラインで一緒に構成することで多くの機能を提供できます。また、PowerShellは.NETオブジェクトをパイプします。 Get-ChildItemパイプSystem.IO.FileInfoオブジェクト。 Foreach、Where、Select、Sort、Group、Formatなどのコマンドを使用して、パイプラインを通過したオブジェクトを操作できます。あなたは時間があるなら、私は無料の電子ブックEffective PowerShellをチェックアウトすることをお勧めします。

+0

ありがとうKeith、私はls -l ..コマンドを動作させました。 DOSプロンプトに「powershell」と入力してから、ls-fileコマンドをDOSプロンプトウィンドウに貼り付けますか?それを実行するより直接的な方法がありますか?また、どのようにコマンドを実行してエコーすることができますか?さもなければ、私は出力がどのような実行から来ているのかを知ることができません。再度、感謝します。 –

+0

PowerShellのプロンプトを起動する方が良い場合は、 "powershell"と入力する必要はありません。ファイル(または$ null)にリダイレクトしたり、出力を変数に取り込んだりしない限り、コマンドは自動的にコンソールに出力されます。 –

+0

偉大な無料の電子ブックにプラス1つ。 – digaomatias

0

これを試してください。そのディレクトリにディレクトリを変更することによって:

cd \path\to\directory\with\files 

ディレクトリ内のすべてのファイルに対して実行プログラム:私は右の質問を取得

c:\user\local\bin\myprog *.type 

ホープ。

+1

これは、 'myprog'がワイルドカードを受け入れる場合にのみ機能します。これは、OPの例のLinuxコマンドと同等ではありません。 –

関連する問題