尝试从cmd:$DATA
中的文件中删除 Stream ,但没有任何效果,除了powershell之外,是否不再可能使用纯cmd / batch来删除?
重新创建/重现场景并显示失败的尝试......
- 首先将字符串写入
:Stream
文件:
>"C:\Path\To\LogError.Log::Stream.Report" (echo/[CopyStatus]&echo/Error=3)
:Stream
第二步从文件中读取字符串:
more < "C:\Path\To\LogError.Log:Stream.Report"
:: output:
[CopyStatus]
Error=3
- 第三个列表/检查
:Stream
文件中的内容:
dir /r "C:\Path\To\LogError.Log:Stream.Report" | find "$DATA"
:: Output:
25 LogError.Log:Stream.Report:$DATA
- 第四次尝试通过多次尝试从文件中删除
:Stream.Report
( )::$DATA
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 列表/检查(再次)
:Stream
文件中的内容以验证它们是否已被删除:
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
- 没有任何变化......
$DATA
仍然留在文件中。
我正在尝试做什么,但我被卡住了。
我成功删除了内容:Stream:
,但没有$DATA
从文件中排除流;它仍然存在:
>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
没有任何困难,它直接与powershell一起工作
Remove-Item -Path "C:\Path\To\LogError.Log:Stream.Report"
Get-Content -Path "C:\Path\To\LogError.Log:Stream.Report"
有没有办法:$DATA
使用纯powershell和批处理来删除?我正在寻找一种允许我在两种环境中处理此问题的解决方案,但我发现每个工具都面临限制。如何在两个平台上实现相同的功能?
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
但是在cmd中,我无法删除,在powershell中,我无法写入。感觉我被困在中间:PowerShell 可以执行两个操作(读取和删除),而 cmd 也可以执行两个操作(写入和读取)。
为什么我不能在powershell中执行所有三个操作,也不能在cmd中执行所有三个操作? 有办法实现吗?
- 概括起来,问题的关键点如下:
问题: | 到: |
---|---|
1.删除: File.Log:$DATA | 命令/命令 |
2. 写入: File.Log: Stream:$DATA | powershell |
您可以利用批处理脚本中的 powershell 来删除特定的流。
写入流就像重定向到所需的流名称一样简单。
基本上有两个选项,将文件复制到不支持备用数据流的位置,然后将文件复制回其原始位置,或者您可以使用 type 命令复制该文件: