Как просто сохранить файл в открытом состоянии без помощи программы на языке C / и т. Д., Используя основные функции Windows?

382
cuda

Почему robocopy все еще копирует открытый файл, открытый с помощью TXT-редактора в Windows

В дополнение к вышеприведенному вопросу, как может быть самый простой способ сохранить файл открытым в среде Windows ENV, подобной среде сервера 2016, чтобы показать свойства robocopy, чтобы избежать копирования открытого файла или даже показать ошибку в журнале для целей тестирования?

Пакетная или другая существующая функция в Windows Server может быть приемлемой

VBS что-то вроде этого не работает

Установите MyFile = fso.OpenTextFile (FileName, ForWriting, True)

Сделайте MyFile.WriteLine "Привет, мир!" петля

0

1 ответ на вопрос

0
grawity

Скопировано из Почему Robocopy все еще копирует открытый файл, открытый TXT-редактором в Windows

Windows унаследовала от MS-DOS концепцию «общих режимов» как простую форму блокировки файлов. При открытии файла вы можете выбрать, использовать его для чтения / записи, только для чтения или нет. Некоторые интерпретаторы сценариев всегда используют «поделиться всем».

Однако вы можете использовать любой язык .NET-среды выполнения и функцию с четырьмя параметрами 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() 

Похожие вопросы