gpt4 book ai didi

windows - 奇怪的标准输出重定向行为

转载 作者:可可西里 更新时间:2023-11-01 10:06:08 29 4
gpt4 key购买 nike

我注意到在将 stdout 重定向到“名称”中包含特殊字符的文件时出现了一些奇怪的行为。

我发现的:

echo.>f,test生成一个名为 f 的文件, 包含文本 ,test .与 . 相同, ;<space> (显然逗号会更改为任何字符)。

echo.>f.:test生成一个名为 F~000%HK 的零字节文件.输出文件名中的第一个字符对应于重定向字符和 .: 之间的重定向“文件名”大写(我相信 . 被忽略/删除的原因与尝试创建一个名为 f.... 的文件的原因相同,只是创建一个名为 f 的文件)。我不知道其余的是什么意思,因为在“文件名”之后更改文本没有任何改变。即 echo.>f.:nope仍然产生空文件 F~000%HK .

同一件事的另一个例子; echo.>test.:test生成一个名为 TEST~4N5 的零字节文件.

在 Batch 中,后一个示例生成具有奇怪名称的空文件的相同结果,但前一个示例生成一个名为 f 的文件。包含一个空行。

要添加任何解释/“异常”吗?

最佳答案

, ; = <space> <tab>是标准分隔符所以 echo.>f,testecho. ,test>f相同.您可以从打开 echo 的批处理批处理文件中看到在这种情况下真正发生了什么。 .(只需在重定向前设置 echo on)。重定向语法可能很棘手,因为它只需要一个文件的第一个参数并且比命令具有更高的优先级。您可以使用 echo. >"f,test" 更改结果

至于echo.>test.:test - 你正在重定向到 Alternate data streams (您使用的是 FAT32 还是 NTFS。FAT32 不支持 ADS,结果可能会产生不同的结果)?与 dir /r (r 开关可从 vista 及更高版本获得)或 streams.exe from sysinternals您可以查看 ADS 的状态。要查看 ADS 内容,您可以使用 more 命令:

more<test.:test

以下是我所知道的可以读取 ADS 的命令:FOR /F , FIND , FINDSTR ,MORE , CERTUTIL ,CLIP ,EXPAND , SORT , MOFCOMP , FTP -S , CSCRIPT , WSCRIPT

如果记事本和写字板打开有 ADS 的文件,它们将删除 ADS。

关于windows - 奇怪的标准输出重定向行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23355972/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com