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()