Tentou remover :$DATA
o Stream de um arquivo no cmd e nada funciona, exceto o powershell . Não é mais possível remover usando apenas cmd / batch ?
Recriando/reproduzindo o cenário e mostrando as tentativas frustradas...
- 1º escreva as strings
:Stream
no arquivo:
>"C:\Path\To\LogError.Log::Stream.Report" (echo/[CopyStatus]&echo/Error=3)
- 2º leia as strings do
:Stream
arquivo:
more < "C:\Path\To\LogError.Log:Stream.Report"
:: output:
[CopyStatus]
Error=3
- 3ª lista/verifique
:Stream
no arquivo:
dir /r "C:\Path\To\LogError.Log:Stream.Report" | find "$DATA"
:: Output:
25 LogError.Log:Stream.Report:$DATA
- 4ª tentativa de remover
:Stream.Report
(:$DATA
) do arquivo por várias tentativas:
cd.>"C:\Path\To\LogError.Log:Stream.Report"
cd.>"\\?\C:\Path\To\LogError.Log:StreamReport'"
echo.>"C:\Path\To\LogError.Log:Stream.Report"
echo.>"\\?\C:\Path\To\LogError.Log:Stream.Report"
more < nul > "C:\Path\To\LogError.Log:Stream.Report"
more < nul > "\\?\C:\Path\To\LogError.Log:Stream.Report"
fsutil reparsepoint delete "C:\Path\To\LogError.Log:Stream.Report"
fsutil reparsepoint delete "C:\Path\To\LogError.Log:Stream.Report"
wmic datafile where "name='C:\\Path\\To\\LogError.Log'" delete "Stream.Report"
wmic datafile where "name='C:\\Path\\To\\LogError.Log:Stream.Report'" delete "Stream.Report"
- 5ª lista/verifique (novamente)
:Stream
no arquivo para verificar se eles foram removidos:
dir /r "C:\Path\To\LogError.Log:Stream.Report" | find "$DATA"
:: output
25 LogError.Log:Stream.Report:$DATA
more < "C:\Path\To\LogError.Log:Stream.Report"
:: Output:
[CopyStatus]
Error=3
- Nada muda...
$DATA
permanece no arquivo.
O que estou tentando fazer e estou preso.
Eu removi com sucesso o conteúdo do :Stream:
mas não excluí o $DATA
fluxo do arquivo; ele ainda está presente:
>dir /r LogError.Log
Directory of C:\Path\To
10/22/2024 05:24 AM 17,083 LogError.Log
25 LogError.Log:Stream.Report:$DATA
1 File(s) 17,083 bytes
0 Dir(s) 128,989,868,032 bytes free
Não há dificuldade e funciona diretamente com o powershell
Remove-Item -Path "C:\Path\To\LogError.Log:Stream.Report"
Get-Content -Path "C:\Path\To\LogError.Log:Stream.Report"
Existe alguma maneira de remover :$DATA
usando pure powershell e batch ? Estou procurando uma solução que me permita lidar com isso em ambos os ambientes, mas me encontro enfrentando limitações com cada ferramenta. Como posso obter a mesma funcionalidade em ambas as plataformas?
cmd.exe /c '(echo/[CopyStatus]&echo/Error=3)>"C:\Path\To\LogError.Log:Stream.Report"'
:: Not work:
[System.IO.File]::WriteAllText("C:\Path\To\LogError.Log:Stream.Report", "[CopyStatus]")
[System.IO.File]::WriteAllText("C:\Path\To\LogError.Log:Stream.Report", "[Error=3]" )
"[CopyStatus]" | Out-File -FilePath "C:\Path\To\LogError.Log:Stream.Report" -Encoding utf8
"[Error=3]" | Out-File -FilePath "C:\Path\To\LogError.Log:Stream.Report" -Encoding utf8
Mas no cmd , não consigo excluir, e no powershell , não consigo escrever. Parece que estou preso no meio: o PowerShell pode executar duas ações (ler e excluir), enquanto o cmd também pode executar duas ações (escrever e ler).
Por que não posso ter todas as três ações no powershell e todas as três ações no cmd ? Existe uma maneira de conseguir isso?"
- Em resumo, os pontos principais da questão são os seguintes:
Pergunta: | Para: |
---|---|
1. Remover: File.Log: $DATA | cmd / morcego |
2. Escreva: File.Log: Stream:$DATA | powershell |