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

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

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

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

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

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

1 ответ1

0

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

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

Однако вы можете использовать любой язык .NET-среды выполнения и систему с четырьмя параметрами .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-й параметр может быть любой Системой.Значение перечисления IO.FileShare , например:

  • [System.IO.FileShare]::None - ничего не делиться
  • [System.IO.FileShare]::Read - поделиться прочитанным (заблокировать запись / удаление)
  • [System.IO.FileShare]::ReadWrite - делиться чтением / записью (блокировка удаления)

Когда вы закончите:

$fh.Close()

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .