現在日々の業務を効率化するために、
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で質問しましょう!
似たような質問が見つかりました
- その他(ブラウザ) Excel VBA seleniumのedge操作について 業務上、分からないことがございまして、先 1 2022/06/20 16:59
- Excel(エクセル) Powershell エクセル検索 完全一致の方法 1 2022/06/05 20:19
- その他(プログラミング・Web制作) マウスを使用してpowershellのプログラムを起動して、引数リストを渡したい 1 2022/11/07 21:39
- その他(OS) Windowsで大量の画像サイズを半自動で変更する方法 6 2023/02/17 08:45
- Excel(エクセル) ファイル一覧表を使ったファイルの移動 5 2022/08/10 15:37
- その他(OS) DOSコマンド『dir』の『/o』オプション 3 2023/03/10 09:29
- Visual Basic(VBA) PowerPoint VBA で画像の鮮明度を変更する方法がわかりません 2 2023/03/24 13:34
- UNIX・Linux Ubuntu でinvalid filenameとなるファイルをコピーする方法 3 2023/06/08 22:26
- その他(プログラミング・Web制作) 複数のテキストファイルの結合方法 2 2022/05/14 23:58
- Windows 10 外部ドライブにマウントできない問題について 9 2022/03/22 18:08
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バッチ終了時にDOS窓を閉じるコ...
-
ftpコマンドを実行すると「425 ...
-
バッチファイル 文字列にスペ...
-
make test って何をするための...
-
バッチコマンドのIF文(条件...
-
ショートカットをデスクトップ...
-
シェルの「:コマンドが見つか...
-
コンピュータ名をファイル名に...
-
バッチファイルを使ってテキス...
-
findstrでヒットした1行前の文...
-
SSH接続でwindowsサーバのコマ...
-
コマンドプロンプトのFTPコマン...
-
ftp 出力時間
-
BATファイル作成時の記述に...
-
コマンドプロンプトをクリック...
-
コマンドプロンプトのERRORLEVE...
-
clコマンドで実行ファイルの出...
-
コマンドプロンプト
-
DOSコマンドに詳しい方、お知恵...
-
DOSコマンドで指定日数よりも過...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチ終了時にDOS窓を閉じるコ...
-
バッチファイル 文字列にスペ...
-
ショートカットをデスクトップ...
-
make test って何をするための...
-
コマンドプロンプトをクリック...
-
バッチコマンドのIF文(条件...
-
シェルの「:コマンドが見つか...
-
findstrでヒットした1行前の文...
-
ftpコマンドを実行すると「425 ...
-
コマンドプロンプトで、特定の...
-
Pythonで単純にファイルを結合...
-
コマンドプロンプトでファイル...
-
コンピュータ名をファイル名に...
-
バッチファイルを使ってテキス...
-
SSH接続でwindowsサーバのコマ...
-
バッチファイルで実行コマンド...
-
フォルダ、ファイル操作に最適...
-
バッチファイルでdiskpart.exe...
-
AccessVBAで実行時間を指定する...
-
2つ目の「pause」は無効?
おすすめ情報