現在日々の業務を効率化するために、
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を探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【お題】絵本のタイトル
- ・【大喜利】世界最古のコンビニについて知ってる事を教えてください【投稿~10/10(木)】
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バッチ終了時にDOS窓を閉じるコ...
-
バッチファイル 文字列にスペ...
-
VC++で音量の調整、ミュートは。
-
AccessVBAから差し込みWORD起動...
-
C言語で、string.h conio.hを使...
-
DOSコマンドに詳しい方、お知恵...
-
sedコマンドでのエスケープ文字...
-
VBA 特定文字含むファイル
-
大量のフォルダからひとつのフ...
-
コマンドプロンプトのエラーに...
-
コマンドプロンプトの「%1」と...
-
これってパソコンの最適化が完...
-
C言語 コマンドプロンプトにつ...
-
binファイルを解凍したいの...
-
コマンドプロンプトで作成日時...
-
バッチでテキストファイルから...
-
Seasar2のdiconファイルの読み方
-
バッチファイル 特定ウインドウ...
-
コマンドプロンプトで相対パス...
-
コマンドプロンプトで変数が数...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチ終了時にDOS窓を閉じるコ...
-
バッチファイル 文字列にスペ...
-
ftpコマンドを実行すると「425 ...
-
コマンドプロンプトをクリック...
-
make test って何をするための...
-
シェルの「:コマンドが見つか...
-
バッチファイルを使ってテキス...
-
ショートカットをデスクトップ...
-
findstrでヒットした1行前の文...
-
AccessVBAで実行時間を指定する...
-
DOSコマンドで指定日数よりも過...
-
Pythonで単純にファイルを結合...
-
SSH接続でwindowsサーバのコマ...
-
コンピュータ名をファイル名に...
-
ftpコマンド出力結果の取得
-
コマンドプロンプトを最小化し...
-
コマンドプロンプトで、特定の...
-
フォルダ、ファイル操作に最適...
-
AccessVBAから差し込みWORD起動...
-
コマンドプロンプトでファイル...
おすすめ情報