Windowsの基本的な機能を使用して、C言語などのプログラムの助けを借りずに、ファイルを単にオープン状態に保つにはどうすればよいですか?


0

robocopyがWindowsのtxtエディターで開いた開いているファイルをまだコピーする理由

上記の質問に加えて、サーバー2016環境のような裸のウィンドウ環境でファイルを開いたままにして、開かれたファイルのコピーを回避するロボコピープロパティを表示したり、テスト目的でログにエラーを表示する最も簡単な方法はありますか?

Windowsサーバーのバッチまたは他の既存の機能のいずれかで許容される可能性があります

このようなVBS sthは機能しません

Set MyFile = fso.OpenTextFile(FileName、ForWriting、True)

MyFile.WriteLine "Hello world!"を実行します ループ

回答:


0

robocopyがWindowsでtxtエディターによって開かれた開いているファイルをまだコピーする理由からコピー

Windowsは、MS-DOSから単純な形式のファイルロックとして「共有モード」の概念を継承しています。ファイルを開くとき、読み取り/書き込み用に共有するか、読み取り専用に共有するか、まったく共有しないかを選択できます。一部のスクリプトインタープリターは、常に「すべて共有」を使用します。

ただし、.NETランタイム言語と4パラメーターのSystem.IO.File.Open()関数を使用できます。WindowsシステムのどこかにC#コンパイラ(csc.exe)が隠されている可能性がありますが、最近ではPowerShellで同じことを行う方が簡単です:

$fh = [System.IO.File]::Open($path,
                             [System.IO.FileMode]::Open,
                             [System.IO.FileAccess]::Read,
                             [System.IO.FileShare]::None)

4番目のパラメーターには、System.IO.FileShare列挙値を指定できます。例:

  • [System.IO.FileShare]::None –何も共有しない
  • [System.IO.FileShare]::Read –共有読み取り(書き込み/削除のブロック)
  • [System.IO.FileShare]::ReadWrite –読み取り/書き込みの共有(ブロック削除)

完了したら:

$fh.Close()
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.