• ベストアンサー

WSHでファイルの属性を変更する

MacOSXはピリオドで始まる非表示のファイルを作成します。 これは、ウインドウズからは見えてしまうので、属性を非表示にしたいのですが、 いちいち手動では、きりがないので、スクリプトで自動化出来そうなのですが、 ところが、知識が全然ないのでどのようにとっつけば良いのか、霧の中状態です。 一応、VBやVCの文法は多少読めるのですが、どのようにすればよいのか教えていただけたら幸いです・・・・ また、これらを勉強するのに良い方法(サイト)もあれば教えてください。

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

  • ベストアンサー
  • hequil
  • ベストアンサー率65% (242/372)
回答No.1

上手く説明するのが下手なのでサンプル作ってみました(笑) WSHなどではファイルに関する操作はFileSystemObjectを利用します。 この中にAttributesプロパティというファイルの属性に関するものがあるようなので、それを利用してみました。 <?xml version="1.0" encoding="shift_jis" ?> <package>   <job id="attrib_r">   <comment>Sample WSH - attrib_r.wsf</comment>   <script language="VBScript">   <![CDATA[   Const strFileName = "c:\test.txt"   Const m_ReadOnly = 1   Dim objFso   Dim objWShell   Dim objFile   Set objFso = CreateObject("Scripting.FileSystemObject")   Set objWShell = CreateObject("WScript.Shell")   If objFso.FileExists(strFileName) Then     Set objFile = objFso.GetFile(strFileName)       If (objFile.Attributes And m_ReadOnly) = m_ReadOnly Then         objFile.Attributes = objFile.Attributes - m_ReadOnly         WScript.Echo "読み取り専用属性を解除しました。"       Else         WScript.Echo "読み取り専用ファイルではありません"       End If     Set objFile = Nothing   Else     WScript.Echo strFileName + "が見つかりませんでした。"   End If   Set objWShell = Nothing   Set objFso = Nothing   ]]>   </script>   </job> </package> 注:インデントは全角スペース使用してます 上記の例では特定のファイルだけを対象にしていますが 応用で指定したフォルダ以下なども可能です。 #Attributesプロパティの詳細は参考URLをご覧下さい。 FileSystemObjectを使用するときに注意しなければならないのは、動作パソコン(サーバー)内でNortonAntiVirusのスクリプト遮断などが有効だと動作しなかったり、警告出たりする場合があります。 更にマイクロソフトのIIS5セキュリティチェックリストを鵜呑みにしてFileSystemObject(scrrun.dll)自体を無効にしていても動きませんのでご注意を。 >また、これらを勉強するのに良い方法(サイト)もあれば教えてください。 同じく私もいいとこあれば教えて頂きたいです。 私の場合は基本的に検索エンジンで調べて、各命令などの詳細はMSDN Libraryで調べる程度です。 以上、参考になりましたら幸いです。

参考URL:
http://www.microsoft.com/japan/developer/library/script56/jsproattributes.htm
youkazu
質問者

お礼

詳しく教えていただいてありがとうございます。 ところで、これらのコードは、どこに記述するんでしょうか? textエディターなら、なんでもいいのですか? で、それを走らせるソフトはどこにあるのでしょう? (つまり、ド基本がわかってないんです。(笑)) 何にもわかってないので、申し訳ないのですが、もう一手差し伸べていただけませんでしょうか。(土下座)

その他の回答 (2)

  • hequil
  • ベストアンサー率65% (242/372)
回答No.3

>ところで、これらのコードは、どこに記述するんでしょうか? >textエディターなら、なんでもいいのですか? 文字コードをシフトJISで定義していますので、 下記のスクリプトをそのまま動かすだけならシフトJISで保存できるテキストエディタなら何でも構いません (もちろんメモ帳でもOKです) >で、それを走らせるソフトはどこにあるのでしょう? >(つまり、ド基本がわかってないんです。(笑)) Windows98/2000/Me/XP またはInternet Explorer4以上をインストールされていれば既にWSHが使える状態になっています。 最新版はMicrosoft Windows Script(参考URL)よりダウンロード出来ます(Windows Script 5.6 日本語版がそれです) 動作方法は wscript hogehoge.wsf cscript hogehoge.vbs で動作させることが出来ます(通常は関連付けがされているかと思います) 更に詳しい説明はMSDN LibraryのWindows Script Hostにて書かれていますので、そちらを参考にして頂くと私の説明よりわかりやすく理解できるかと思います(笑) http://www.microsoft.com/japan/developer/library/default.asp? URL=/japan/developer/library/script56/wsconWSHBasics.htm (長いので2行にしていますが、実際は1行です) 以上、参考になれば

参考URL:
http://www.microsoft.com/japan/developer/scripting/
  • hequil
  • ベストアンサー率65% (242/372)
回答No.2

すいません、送信してから気づきましたが 下記サンプルは読み取り属性解除でした(^^;; 隠し属性ONにするには Const m_Hidden = 2 を定義して If (objFile.Attributes And m_Hidden) <> m_Hidden Then   objFile.Attributes = objFile.Attributes + m_Hidden   WScript.Echo "隠し属性を設定しました" Else   WScript.Echo "既に隠し属性が設定されています" End If とかで動くような気がします(汗)

関連するQ&A