• ベストアンサー

VBSorバッチファイルにてファイル読み取り属性の一括解除方法。

今回、CDからデータをとりだして(ここでは)c\:testというフォルダに格納する。というプログラムを作りたいのですがCDから取り出すので読み取り属性がついてしまい、上書きをしようとしても失敗してしまいます。フルパスを指定してひとつづつつぶせばいいのですがなんせデータ量が多いのでなにか一括でそのプログラムを使うだけでフォルダー内のファイルの読み取り属性をずばっと解除できればいいのですがなにか方法はありますでしょうか?subfoldersやfilesではその下のフォルダーやc:\testの直下のファイルにしか効果がなく・・・ぜひともよろしくお願いします。

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

  • ベストアンサー
  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.1

Windows NT、2000、XPならattribというコマンドを使ってみたらどうだろうか? C:\test>attrib /D /S -r *.* で、C:\test以下の全サブディレクトリ、全ファイルに対して読み取り属性を解除できる。 VBSを使うならFileSystemObjectsを使う事になるのだろうか。

jazzstar
質問者

お礼

そんなコマンドがあるとは・・・ありがとうございました。

その他の回答 (1)

  • hofuhofu
  • ベストアンサー率70% (336/476)
回答No.2

VBSで行うには再帰関数を使うのが便利かと思います。 Function ChangeAttribute(TargetFolder) For Each File In TargetFolder.Files File.Attributes = File.Attributes and not(1) Next For Each Folder In TargetFolder.SubFolders Folder.Attributes = Folder.Attributes and not(1) ChangeAttribute(Folder) '関数内で自分自身を呼び出す Next End Function

jazzstar
質問者

お礼

さんこうにさせていただきました。ありがとうございます!

関連するQ&A

  • バッチファイルでフォルダ削除

    C:\dataフォルダに格納されているtest1フォルダ、test2フォルダのように、 testとついたフォルダとその中身をバッチで一括削除したいです。 また削除時は、確認なしで、ダブルクリックをしたら処理を完了させたいです。 素人ながらにネットを検索して、 下記のバッチを作成してみましたが正常に動作しませんでした。 powershell -Command "Remove-Item -Path c:\data\test* -Recurse" 可能であればコマンドプロンプトかpowershellでフォルダを削除できるバッチファイルをご教示下さい。 お手数をおかけしますが、よろしくお願いします。

  • 読み取り属性を一括して外す

    windows10で特定フォルダーを指定して その特定フォルダー(及び階層サブフォルダ)内のファイルに  読み取り属性がONの場合に  これをOFF(書き込み可能)にするフリーソフトやバッチは有りませんか ? (多数のファイルの読み取り属性を一括チェックして   属性がONなら一括して外したいと思います。) 「Neo FileTimeChange」が候補に上がりましたが  現在、有償版に変更になっています。

  • ファイル属性の変更方法???

    Vista、7でProgram File内にあるデータファイルを更新します 通常のままではエラーになりますので、ファイル属性をフルコントロールに変更したいのです //パスを定数で定義する const string FILE_PATH = @"C:\Program File\MyProgramHolder\Data.txt"; //ファイルの属性を取得する System.IO.FileAttributes uAttribute = System.IO.File.GetAttributes(FILE_PATH); //フルコントロール属性を指定する System.IO.File.SetAttributes(FILE_PATH, uAttribute | System.IO.FileAttributes.XXXXXXX); ところがXXXXXXに指定すべきAttribute値の指定方法が分かりません ぜひご指導お願い致します 追伸】手操作でData.txtのプロパティを変更する方法は理解していますが、日本各地にインストールするので手操作は無理なのです そのためプログラムで属性変更したいのですが、手操作以外の方法はありますか? 例えばインストーラの指定でファイル属性を変更するとか・・・・・・?

  • 【初心者】バッチファイルの作成方法について

    Windowsバッチファイルの作成方法について質問させて下さい。 以下の処理を行うバッチファイルの作成を考えています。 ・C:\Program Files\Microsoft Visual Studio 8\VCへ移動 ・上記フォルダ内にある vcvarsall.batファイルを実行 ・C:\Program Files\Microsoft Platform SDKへ移動 ・上記フォルダ内にある SetEnv.cmdファイルを実行 ・Cドライブ直下(C:\)へ移動 目的としては、「Microsoft Visual C++2005」の環境設定ファイルを バッチファイルにて一括実行することです。 実際に自分で作成したバッチファイル(setenv.bat)の内容は 以下のとおりです。 ---------------------------------------------------------- @echo off echo setenv.batを実行します cd C:\Program Files\Microsoft Visual Studio 8\VC echo vcvarsall.batを実行して環境設定をおこないます vcvarsall.bat cd C:\Program Files\Microsoft Platform SDK echo SetEnv.cmdを実行して環境設定をおこないます SetEnv.cmd cd C:\ ---------------------------------------------------------- [実行結果] C:\>setenv.bat setenv.batを実行します vcvarsall.batを実行して環境変数を設定します Setting environment for using Microsoft Visual Studio 2005 x86 tools. 実行結果のとおり、setenv.batの実行までしか処理が行われず、 vcvasall.batは実行されません。 原因と対処方法について、どなたか教えて頂けませんでしょうか?

  • VBA:2つのCSVファイルを開きたいです。

    エクセル2010のVBAにてCSVファイルを開き結合させるプログラムを組もうとしているのですが、2つ目のCSVファイルを開こうとすると、何故かエラーが出てしまいます。 -------------------------------------------------------------------------------- 1つ目 Sub mobile_FileSearch(Path As String) 'test.csvのデータを検索して開く Dim FSO As Object, Folder As Variant, File As Variant Set FSO = CreateObject("Scripting.FileSystemObject") For Each Folder In FSO.GetFolder(Path).SubFolders Call mobile_FileSearch(Folder.Path) Next Folder For Each File In FSO.GetFolder(Path).Files If File.Name = "test.csv" Then Workbooks.Open ("test.csv") End If Next File End Sub ---------------------------------------------------------------------------- 2つ目 Sub local_FileSearch(Path As String) 'bbb.csvのデータを検索して開く Dim FSO As Object, Folder As Variant, File As Variant Set FSO = CreateObject("Scripting.FileSystemObject") For Each Folder In FSO.GetFolder(Path).SubFolders Call local_FileSearch(Folder.Path) Next Folder For Each File In FSO.GetFolder(Path).Files If File.Name = "bbb.csv" Then Workbooks.Open ("bbb.csv")'←ここでエラー End If Next File End Sub ------------------------------------------------------------------------ まったく同じプログラムで、csvファイル名だけ変えただけで実行時エラー1004が出てしまいます。 一体全体何が問題なのでしょうか?

  • バッチファイルを実行するとエラーが出る

    win2000を利用しています。起動時に自動的にアプリケーションを実行させるバッチファイルを作りたいのですがエラーがでます。 以下のように書いています。このバッチファイルをスタートアップに入れて実行させたいと思っています。 そして試しに手動で実行してみると、構成ファイルが見つからない、パス名を確認してくださいと言ったいエラーが出ます。 パスが間違っているのかと思い、 「C:\Program Files\Internet Explorer\IEXPLORE.EXE」だけをファイル名を指定して実行をするとちゃんとIEが起動します。 何が間違っているのかわからないのですが、ヒントだけでもお願いします。 test.bat(ファイル名) --------------------------- start C:\Program Files\Internet Explorer\IEXPLORE.EXE ---------------------------

  • バッチファイルで、指定したフォルダをコピーしたい

    Windowsを立ち上げたら指定のフォルダを、 Bドライブに毎回コピーさせたく、バッチファイルを 作っているのですが、全くうまくいきません。 xcopy c:\Program Files\test b:\test2\ 上記のように書いてみましたが、コピーされませんでした。 Cドライブのtestフォルダを、Bドライブのtest2フォルダに コピーさせたいのですが、何か間違っているのでしょうか? アドバイスくださればうれしいです。

  • バッチファイル 現在のフォルダ名をファイル名に置き換える

    こんにちは。超初心者なのですが教えてください。 ある複数フォルダに格納されている.txtファイルを、現在の フォルダ名を取得して、別フォルダにリネームして 格納するバッチファイルを作成したいと考えています。 for文を繰り返し使わなければいけないことはわかっているのですが、それをどう表現していいのか全然わかりません。 例えば、 データ取得元として以下のファイルがあったら C:\temp\20100101\data1.txt C:\temp\20100101\data2.txt C:\temp\20100101\data3.txt C:\temp\20100102\data1.txt C:\temp\20100102\data2.txt C:\temp\20100103\data1.txt C:\temp\20100103\data2.txt これを別フォルダに、現在のフォルダ名をファイル名にくっつけて 以下のように一つのフォルダに纏めて格納したいと思っています。 ファイルの中身はそのままコピーしたいので、どこかでcopyコマンド を使うかもしれないです。 C:\test\data1_20100101.txt C:\test\data2_20100101.txt C:\test\data3_20100101.txt C:\test\data1_20100102.txt C:\test\data2_20100102.txt C:\test\data1_20100103.txt C:\test\data2_20100103.txt 実装方法として以下までは考えましたが、これ以上は無理そうです。 rem set A=C:\temp rem set B=C:\test for %%A in (C:\temp\) do ( if not "%%A"=="" ( pushd "%%A" for /d %%B in (*) do ( if not "%%B"=="" ( pushd "%%B" for /d %%C in (*) do ( if not "%%C"=="" ( pushd "%%C" ) ) ) ) popd? ) ) 申し訳ありませんが、お助け願います。

  • フォルダーの属性変更

    HDD上にフォルダをつくり、CDからファイルをコピーし、 そのフォルダを隠し属性をつけるというプログラムを組んでいます。 現在、フォルダの属性を変更するAPIを探しているのですが、なかなか見つかりません。 ファイルなら出来るのですが。。。 どうかよろしくお願いします。

  • バッチファイルについて教えてください。

    バッチファイルで、iniファイルの内容を一部書き換える方法を教えてください。 OSによって、iniファイルが格納されている場所が違います。 C:\Program Files\bbbb\aaaa.ini または C:\Program Files\aaaa.iniのどちらかにあるaaaa.iniの内容を書き換えるバッチファイルを作りたいです。 書き換える内容は、下記になります。 POP3Server="192.168.1.201" ⇒ POP3Server="192.168.1.208" SMTPServer="192.168.1.201" ⇒ POP3Server="192.168.1.208" です。 直接、変更するには台数が多く(100台くらい)できればバッチファイルで 実施したいのですが、今までXCOPYやROBOCOPY等の簡易的なバッチ ファイルしかなく作ったことがなく、ご教授いただければと思います。 宜しくお願いします。

専門家に質問してみよう