Como simplesmente manter um arquivo em estado aberto sem ajuda do programa em linguagem C / etc .. usando as funcionalidades básicas do Windows?

0

Por que o robocopy ainda copie um arquivo aberto, aberto pelo editor de txt no Windows

Além da pergunta acima, como poderia ser a maneira mais simples de manter um arquivo aberto em um ambiente Windows como o servidor 2016 para mostrar as propriedades robocopy que evitará copiar o arquivo aberto ou até mesmo mostrar erro no log para fins de teste ?

seja por lote ou outra função existente no servidor windows pode ser aceitável

VBS sth assim não funciona

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

MyFile.WriteLine "Olá, mundo!" Loop

    
por cuda 24.09.2018 / 06:23

1 resposta

0

Copiado de Por que o robocopy ainda copia um arquivo aberto, aberto pelo editor de txt no windows

O Windows herdou do MS-DOS o conceito de "modos de compartilhamento" como uma forma simples de bloqueio de arquivos. Ao abrir um arquivo, você pode escolher se deseja compartilhá-lo para leitura / gravação, somente leitura ou não. Alguns intérpretes de scripts sempre usarão "compartilhar tudo".

No entanto, você pode usar qualquer linguagem de tempo de execução do .NET e o parâmetro 4 Função System.IO.File.Open () . As chances são de que o seu sistema Windows tem um compilador C # (csc.exe) escondido em algum lugar, mas hoje em dia é mais fácil fazer o mesmo no PowerShell:

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

O quarto parâmetro pode ser qualquer System.IO .FileShare enum value, por exemplo:

  • [System.IO.FileShare]::None - não compartilha nada
  • [System.IO.FileShare]::Read - compartilhar leitura (gravação / exclusão de bloco)
  • [System.IO.FileShare]::ReadWrite - compartilhar leitura / gravação (exclusão de bloco)

Quando terminar:

$fh.Close()
    
por 24.09.2018 / 11:12