2009-05-08 8 views
0
私はちょうど私は、Windows OS上で次の操作を実行する必要があるプロジェクトだ

Windowsシステムのスクリプトのためのアドバイス+プログラミング

  1. どのように多くのドライブを検出している(C: ..etc D:E)をシステム・ラベルが各ボリューム
  2. のためであるか、現在のシステム
  3. に接続されたどのくらいのストレージ(使用および遊離の両方) ドライブのそれぞれについて
  4. どのような形式各
  5. ドライブがどこI(各ファイルが2GB程度 である)これらの ドライブ、各ファイルのサイズが
  6. ファイルの処理がいかに大きな
  7. のいずれかで指定されたディレクトリに ているどのように多くのファイル (NTFS/FAT32)
  8. ですfseek()のようなCのような と、バイナリデータの の解析と、ビッグエンディアンのリトルエンディアン の変換が必要です。いくつかのロジック コードも書かなければならない。

私は経験豊富なC \ C++プログラマーですが、これはスクリプト作成の学習を開始するのに最適な時期だと思いました。

私が考えていた候補は:(Python || Ruby)& & PowerShellです。

IronPython + Powershellで実現できるものですか?それとも、そこに優れたツールや言語がありますか?

PS:PowerShellはVBScriptを置き換えることを意図していますか?また、VB.netはC#、WPF、Powershellが存在するので、何のために良いのでしょうか?

答えて

4

私はこの種のシステム情報検索に最適化されているので、PowerShellは理想的なだと思います。 WMIは、C#IMOとは対照的にPowerShellから非常に使いやすいです(そして、私はC#の開発者です)。

#1,2, 3 and 4 
PS> Get-WmiObject Win32_LogicalDisk | 
>> Format-Table Name, VolumeName, FileSystem, Size, FreeSpace -auto 

Name VolumeName FileSystem   Size FreeSpace 
---- ---------- ----------   ---- --------- 
C:    NTFS  160038907904 100353536000 
D: 
E: 
F: PDC2008 NTFS  160039239680 40155922432 
V: Vista  NTFS  250056704000 33944559616 

#5 
PS> dir <path> -r | where {!$_.PSIsContainer} | Measure-Object 

#6 
PS> dir <path> -r | where {!$_.PSIsContainer} | 
>> Format-Table Fullname, Length -auto 

をそして、PowerShellは.NET Frameworkを使用する能力を経由して簡単に#7を処理することができます:ヘック、のは、これはPowerShellのからがいかに簡単であるかを見てみましょう。 PowerShellのfseekスタイルのプログラミングの例については、tail-content scriptの139行目を参照してください。

8

あなたのリストの7番目の項目を除いて、これはPowershellとWMIを使用するとかなり簡単になるはずです。これはおそらくPowershellの自然ドメインです。あなたが最初の6つのリスト項目のために別の言語を必要としないので、あなたが最後のものに使うものは本当に重要ではありません。おそらくあなたはPSを使うことができます(私はこれでIOをやったことはありません)。

VBScriptは、近い将来にWindows Script Hostが、展開のための小さなスクリプトを書くときにはより安全な賭けであると考えられています。Powershell Windows 7以降にのみ含まれています。つまり、Powershellは、前述のものと同じ機能を提供するだけでなく(簡単な.NETやWMIアクセスなど)、自動化の目的でWSHとCMDを廃止することを確実にしています。

一方、VB.NETはMicrosoftが販売する主要な.NET言語の1つです。 VBScriptとの関係はほとんどないが、PowershellやWPFとの競合はない(全く異なる技術)。両方の言語が依然として意図した市場を見つけるのに苦労しているように見えるので、C#のコンバージェンスが進行しているかもしれません。それでも、VB.NETは、VBプログラマであるときに.NETに切り替える最も簡単な選択肢であり、MSが.NETを作成したためにMSが失いたくないものがたくさんあります。

4

これは、IronPython | IronRubyまたはPowershellで実行できます。 IronPythonは実際の言語(C#やJavaよりも古い)なので、たくさんのサポートと必要な.NET API(またはCOM API)へのフルアクセスが推奨されます。

私はあなたの正確な質問に答えるこの記事を読むことをお勧めしたい:http://pythonconquerstheuniverse.blogspot.com/2009/04/ironpython-windows-scripting-language.html

+0

PythonはC#またはJavaより古い言語ですが、IronPythonは確かにそうではありません。たとえそれが古いものであっても自動的にそれを改善するものではありません(私はそれが悪化すると言っているわけではありません)。また、「本当の」言葉が何を意味するのかもわかりません。 – Rohit

+0

さて、PowerShellも同様です。確かに架空ではありません。 :) – JasonMArcher

6

PowerShellが簡単に1-6を処理することができます。 Number 7はおそらくPowerShellで行うことができますが、詳細によってはより良いオプションがあるかもしれません。

PowerShellの学習に関する良い情報については、What tutorial do you recommend for learning PowerShell?を参照してください。

0

他に誰も追加していないので、私はあなたに不評の答えを与えます:Perl。

Win32 APIがC/C++プログラマとして快適であれば、Perlを使用する方が簡単です。 Win32 APIにアクセスするためのモジュールがあり、PerlはC/C++プログラマが高速化するのは非常に簡単です。Perlは過去に私の仕事をいつも果たしてきました。

0

Perlに関しては、RubyもすべてのWin32 APIとWMI関数にアクセスできます。

1

PowershellはWindows用の自動化プラットフォームとして設計されました。だから、Ruby、Python、Perl、VBScriptなどが仕事をすることができます。仕事に最適なツールを選んでみませんか?ファイルサイズ

Get-ChildItem c:\path -Recurse | Measure-Object -Average -Sum 
           -Maximum -Property Length 

そして、ファイル処理のために、あなたが使用することができます上の情報で

$drives = Get-WmiObject -Class Win32_LogicalDisk | ? {$_.DriveType -eq 3 } 
$drives | select DeviceId,VolumeName,FileSystem,FreeSpace, Size 

ディレクトリ内のファイル数

Get-ChildItem c:\path -Recurse | Measure-Object 
Get-ChildItem c:\path | Measure-Object 

:ここに は、いくつかの基本的なドライブ情報を取得する方法ですget-contentなどのネイティブのコマンドレット、または.Netタイプの呼び出しおよびインスタンス化。

関連する問題