あるファイルを参考にして、別のファイルを編集する場合があります。このとき、本当は参照しているファイルに編集を加えてしまう場合があります。
たとえば、PowerPoint で、あるファイル A と B を見ながら、ファイル C に必要なスライドをコピペするような場合。
本当はファイル C だけを編集したいのに、作業しているうちに、同じようなスライドがあるために、ファイル A にも編集してしまって、もとに戻せなって、泣く泣くすべての編集を一旦破棄。なんてことに。
こんなときのために、ファイルを編集禁止状態でで開くためのバッチファイルをご紹介します。
■参照元を読み取り専用で開く
安心なのは、参照元を読み取り専用で開くこと。
そうすれば、編集はできませんし、スライドやテキストのコピペもできます。
MS-Officeにはこの機能があるみたいで、
ファイルを SHIFT キーを押しながら右クリック
すると、「読み取り専用で開く」というメニューが出てきます。
ところが、これが全然効かない。役に立たんやつ…。
どうも調べてみたところ、レジストリを弄り回すとちゃんと有効になるそうなのですが、わざわざメニューまで作っておきながら、それが機能しないってどういうことよ…。とか思っちゃいますね。
■読み取り専用ファイルにする
まあ、レジストリをいじっても、有効なのは MS-Office ファイルだけだし、どんなファイルに対しても「読み取り専用で開く」機能が聞くといいなぁ、ということで、「読み取り専用で開く」メニューを作ってみました。
たいしたものではないですが、バッチファイルで、
開く前にファイルに読み取り専用属性をつける
だけです。
こうしておくと、すべてのアプリケーションは読み取り専用モードで開くので、誤操作で編集することがありません。Office ファイル以外に対しても有効な方法です。
ただし、共有ファイルなどでこれをやってしまうと、他の人が編集しようとしたときに編集できなくなってしまいます。
そこで大事なポイントは、
自分がファイルを開く瞬間だけ読み取り専用属性をつける
ことです。
■バッチファイルの中身
このバッチファイルの作業手順を説明すると
1.読み取り専用属性をつける
2.ファイルを開く
3.読み取り専用属性を解除する
ってやってるだけです。そうするとアプリケーションが開く瞬間には読み取り専用なので、アプリケーションは書き込みができないと判断します。その後、すぐに読み取り専用属性は解除されるので、他の人は編集できるようになるというわけ。
以下のテキストをコピペして、ReadOnlyOpen.bat という名前で、SendTo フォルダに保存してください。
これで、目的のファイルを右クリックして、「送る(N)」のサブメニューを見てやれば、 ReadOnlyOpen というメニューが出るはずです。
★━━━━━━━━━━━━━━━━━━━━━━━━━━━━★
attrib %1 |find " R "
if not ERRORLEVEL 1 GOTO ReadOnly
:NotReadOnly
attrib +r %1
timeout 3
start "w" %1
timeout 10
attrib -r %1
GOTO EXIT
:ReadOnly
start "w" %1
GOTO EXIT
:EXIT
▲━━━━━━━━━━━━━━━━━━━━━━━━━━━━▲
もしよろしければ使ってください。
一応最初に、すでに読み取り専用属性があるものは、何もしないようにしてあります(勝手に解除しちゃうとまずいので)。
timeout の行は設定が反映されるまでのタイミング待ちです。アプリの起動が遅いときなどはもうちょっと長くしてやるとうまくいく場合がありますので、適当に調整してください。
ありがとうございます、無事解決できました。