
現在日々の業務を効率化するために、
DOSコマンドやエクセル関数、簡単なVBAを学びました。
業務の中で、特に多いのが繰り返しのフォルダ、ファイル操作です。
最初はDOSコマンドで対応していたのですが、ある程度複雑な処理はDOSコマンドでは限界があると感じたので、VBAを学びました。
VBAを利用すれば、複雑なフォルダ操作、ファイル操作ができることはわかったのですが、やりたい業務の方法をネットで調べていくとPowerShellというDOSコマンドの強化版みたいなのを知りました。
そして、同じ処理を実現しているVBAとPowerShellをみていくと、PowerShellの方がコードが少なくて、簡単そう?に見えました。
当方フォルダ操作、ファイル操作を行うことが多いので、もしもPowerShellの方がなにかと簡単にできるなら是非学びたいと思うのですが、実際どうでしょうか?
質問が漠然としていて申し訳ありません。
ちなみに、WSHも興味があります。
そちらにも詳しい方がいらっしゃいましたら上記の質問に合わせてご回答して頂けると幸いです。
No.2ベストアンサー
- 回答日時:
バッチ ファイルは作成した経験がありませんが、質問者と同じような理由で VBScript (WSH) や VBA を使って作業をしてきましたが、最近はもっぱら PowerShell を使っています。
まだまだ PowerShell を使いこなせていませんが、ファイル操作、ユーザー アカウント管理、サーバー機能の操作などの定型化に使っています。
VBScript ...
[メリット]
Excel も不要、テキスト エディタのみで気軽に書ける。 文法もわかりやすい。
ファイル操作は FileSystemObject を駆使。
[デメリット]
気づくとスパゲッティ コード。
アクセス権の操作が面倒。
インテリジェンスなエディタが無いのでコード量が多くなってくると見づらい。
デバッグ環境がないので VBSEdit を使っている。
VBA
[メリット]
コード自体は VBScript とほぼ同じだが、VB Editor がインテリジェンス機能を持っているのでコード編集がしやすい。
標準モジュールやクラス モジュールに分解できるので規模が大きいものも混乱しない。
Excel または Access を起点にするので「リスト」が必要な処理を可視化しながら処理できるツールを作りやすい。
FileSystemObject などの COM オブジェクトは参照設定してしまえばインテリジェンス機能が働く。
[デメリット]
所詮は「リスト」ありきの処理ツール用。
所詮は VBScript と同じ程度の言語機能。
サーバーに Office 製品は入っていない。
PowerShell
構文は VB 系とまったく違うけれど、命令 (コマンドレット) の名前やオプションに規則性があるので把握しやすい。
ファイル/フォルダ、アカウント群、レジストリなど、相手が何であれ子要素を取り出すなら Get-ChildItem (というか dir) で済む。
とにかく強力。
処理の結果が文字情報ではなく「オブジェクト」というもので、出力は適宜いい感じにおこなってくれるし、処理の結果であるオブジェクトを別の処理に簡単に引き渡せるのでコマンドライン シェルよりも融通が利く。
標準エディタである PowerShell ISE、まぁまぁ使いやすい。(まだまだだけど)
PoweShell ISE に Script Browser と Script Analyzer のアドオンを入れて少し幸せ。
無料の Visual Studio Community 2015 に拡張機能で PoserShell Tools for Visual Studio 2015 を入れれば幸せ。
ご回答して下さり、ありがとうございます。
それぞれについてメリット、デメリットを記載して頂いたので、
イメージしやすいです。
参考にさせて頂きます。
No.1
- 回答日時:
通りすがりです。
PowerShellですが、存在は知っていますが、使用した事はありません。
周囲でも使用している方は見かけませんね。
ちょっと言葉を整理してみます。
DOSコマンド バッチファイル(***.Bat)
WSH VBS(VBScript)(***.Vbs)
VBA エクセルのVBAの事だと思います。
名前の通り、DOSコマンドは、Windows以前のMS-DOS時代の後継機です。
Windowsになって、VBSを使いようになりました。
エクセルのVBAからも WSHを呼び出してコントロールできます。
但し、エクセルVBAを使用するにはエクセルがインストールされている
パソコンである事が必須です。
早道で云えば、エクセルVBAが使えるのであれば、WSH(VBS)をマスターする方が
早道だと思います。
エクセルのVBAとVBSはセットだと思って、使い分ければ良いと思います。
別件ですが
>業務の中で、特に多いのが繰り返しのフォルダ、ファイル操作です。
が気になります。
仕事の業務の中でフォルダやファイル操作があるということ自体
結構、リスキーだと思います。
この辺りを改善する事が優先の様な気がします。
ご回答して下さり、ありがとうございます。
なるほど、PowerShell使用者は現在少ないのですね。
WSHの件もご回答くださり、ありがとうございます。
>仕事の業務の中でフォルダやファイル操作があるということ自体
結構、リスキーだと思います。
この辺りを改善する事が優先の様な気がします。
確かに、誤って消してしまうことがあっては、下も子もないですね...
現在の業務をどうこなすかを考えるのとは別にそもそも発生させない
方法を考えてみます。
ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バッチファイル 文字列にスペ...
-
バッチ終了時にDOS窓を閉じるコ...
-
make test って何をするための...
-
DOSコマンドで指定日数よりも過...
-
ftp受信確認
-
AccessVBAから差し込みWORD起動...
-
findstrでヒットした1行前の文...
-
2つ目の「pause」は無効?
-
beautifulsoupがインストールで...
-
コマンドプロンプトでファイル...
-
ftpコマンド出力結果の取得
-
DOSで暗号化ZIPを解凍する方法
-
AccessVBAで実行時間を指定する...
-
powershellでlinuxのduコマンド...
-
Pythonで単純にファイルを結合...
-
コマンドプロンプトとCygwinの違い
-
バッチファイルについて教えて...
-
シェルの「:コマンドが見つか...
-
バッチえファイルを編集するに...
-
フォルダ、ファイル操作に最適...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチ終了時にDOS窓を閉じるコ...
-
バッチファイル 文字列にスペ...
-
make test って何をするための...
-
シェルの「:コマンドが見つか...
-
コマンドプロンプトをクリック...
-
ftpコマンドを実行すると「425 ...
-
findstrでヒットした1行前の文...
-
ショートカットをデスクトップ...
-
バッチファイルを使ってテキス...
-
Pythonで単純にファイルを結合...
-
フォルダ、ファイル操作に最適...
-
ftpコマンド出力結果の取得
-
シェルスクリプト内のcdで、カ...
-
AccessVBAで実行時間を指定する...
-
powershellでlinuxのduコマンド...
-
SSH接続でwindowsサーバのコマ...
-
FTPの連続実行でフリーズする
-
コマンドプロンプトとCygwinの違い
-
Windowsのバッチ(bat)ファイル...
-
xCopyコマンドでネットワークご...
おすすめ情報