• ベストアンサー

VB Scriptで隠しファイル、フォルダの表示/非表示の切り替え

エクスプローラからツール>フォルダオプション>「表示」タブといくと 「すべてのファイルとフォルダを表示する」と「隠しファイルおよび隠しフォルダを表示しない」の二択から好きな方を選べるようになっていますが、これをVB Scriptで自動化することはできないでしょうか? 例えばhide.vbsを実行すれば隠しファイルが見えなくなるように。unhide.vbsで見えるようになるようにしたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんにちは。 特定のフォルダを選ぶなら、直接、 ChengeAtribute mPath とコマンドを書き換えてください。なお、トグルになってますから、Hidden <-> Normal と入れ替わりますから、VBSは、ひとつだけで可能です。 Sample Code '------------------------------------------- Dim mFolder, mPath Dim msg Const ssfDESKTOP = 0 Const ssfPROGRAMS = &H2 'ProgramFiles Const ssfPERSONAL = &H5 'MyDocuments Set mFolder = CreateObject("Shell.Application").BrowseForFolder(0, "フォルダを選択してください", 0, ssfPERSONAL) If Not mFolder Is Nothing Then mPath = mFolder.Items.Item.Path End If If mPath <>"" Then ChengeAtribute mPath MsgBox msg End If Function ChengeAtribute(FolderPath) Dim fso, d, f, s Const Normal =0 Const Hidden =2 Set fso = CreateObject("Scripting.FileSystemObject") Set f = fso.GetFolder(FolderPath) If f.Attributes And Hidden Then f.Attributes = f.Attributes + Hidden msg = "Hidden On" Else f.Attributes = f.Attributes - Hidden msg = "Hidden On" End If End Function '-------------------------------------------

その他の回答 (3)

noname#144013
noname#144013
回答No.3

こんにちは。 下記は一例です。 WSH(VB Script)で、エクスプローラを起動して、SendKeyメソッドにより該当のキー操作を 送ってやる方法もあるかと思います。 エクスプローラ上の操作は、マウスを使わずに、キー操作のみで操作可能だと思いますので、 「メニュー」及び「フォルダオプション」のキー操作(下記のようなもの)を、SendKeyメソッドで エクスプローラに送ってやる方法です。 <ウィンドウ操作の標準的な主なキー操作> ◎メニュー操作   [Alt]キー+英字キー など ◎ダイアログ上の操作   タブの切替え           → [Ctrl]+[Tab]   コントロールのフォーカス移動 → [Tab] or 方向キー([↑]、[↓]、[←]、[→]) など   ラジオボタン、チェックマークのOn/Off → スペースキー ■参考サイト @IT:運用 Windows管理者のためのWindows Script Host入門 第5回  WshShellオブジェクトの詳細(1) 4.キー・ストロークの送信とプログラムのアクティベーション http://www.atmarkit.co.jp/fwin2k/operation/wsh05/wsh05_04.html SendKeys メソッド http://msdn.microsoft.com/ja-jp/library/cc364423.aspx ================================================== ※すみませんが、以下は余談になります。 下記↓の質問の件ですが、 http://qanda.rakuten.ne.jp/qa5433799.html やはり、当方の調査不足でした。 Windows XP 及び Vista 等では、   コマンドプロンプト上で拡張子なしで、コマンドを記述した場合、   環境変数 PAHTEXT に登録された拡張子の順番でコマンドとして認識され、 実行できるようです。 ですので、.vbs のスクリプトファイルでも拡張子なしで実行できるようです。 ■参考サイト Studio ODIN - blog風小ネタ集 > 拡張子を省略しても実行できるワケ http://www.odin.hyork.net/write/write0023.html 北アラバ公国 コマンドプロンプトでの拡張子によるファイル実行順位 http://northaraba.blog17.fc2.com/blog-entry-333.html 実行ファイルの拡張子を追加定義する - @IT http://www.atmarkit.co.jp/fwin2k/win2ktips/842pathext/pathext.html 環境変数 http://elku.at.infoseek.co.jp/memo/environment.htm 以上です。参考になれば幸いです。

  • deadline
  • ベストアンサー率63% (1239/1943)
回答No.2

レジストリの下記レジストリキー&エントリーで設定していますから、RegWriteメソッドで書き替えてください。ただし、vbs実行(設定変更)後、ログオフ⇒ログオンが必要なはずです。 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced Hidden  REG_DWORD  0x00000002   (←隠しファイルおよび隠しフォルダを表示しない) Hidden  REG_DWORD  0x00000001   (←すべてのファイルとフォルダを表示する) ついでに、「保護されたオペレーティング システム ファイルを表示しない (推奨)」は、同じレジストリキーの ShowSuperHidden  REG_DWORD  0x00000000   (←表示しない) ShowSuperHidden  REG_DWORD  0x00000001   (←表示する) 『Microsoft MSDN Library:RegWriteメソッド』(下の方にVBScriptとJScriptのサンプルプログラムがあります。) http://msdn.microsoft.com/ja-jp/library/cc364417.aspx

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

VBSの本に 「ファイルやホルダの属性を取得したい」というのがあり、 ObjFile.Attributes=1 読み取り専用 などの例が載っています。 ファイル属性の定数も載っていてHidden(=2)隠しファイルがあります。 Googleで「Attributes Hidden VBS」などで照会し質問者のニーズのことかチェックのこと。 http://www.red.oit-net.jp/tatsuya/vb/FileSystemObject.htm  など。