相关疑难解决方法(0)

FindFirstFile没有文档的通配符或bug?

MSDN说:

HANDLE WINAPI FindFirstFile( LPCTSTR lpFileName, LPWIN32_FIND_DATA lpFindFileData );
Run Code Online (Sandbox Code Playgroud)

lpFileName 目录或路径以及文件名,可以包含通配符,例如星号(*)或问号(?)......

直到今天我还没有注意到"例如".

假设您有一个"c:\ temp"目录,下面的代码显示"temp".注意搜索到的目录:"c:\ temp>".如果你有一个"c:\ temp1"目录和一个"c:\ tem"目录,FindNextFile会找到"temp1",但是找不到"tem".我认为'<'会找到"tem",但我错了:它的行为方式相同.你附加了多少'<'/'>并不重要:行为是一样的.

从我的角度来看,这是一个错误('>'&'<'不是文件名中的有效字符).从微软的角度来看,它可能是一个功能.

我没有设法找到F*F行为的完整描述.

const TCHAR* s = _T("c:\\temp>");
  {
    WIN32_FIND_DATA d;
    HANDLE h;

    h = FindFirstFile( s, &d );
    if ( h == INVALID_HANDLE_VALUE )
    {
      CString m;
      m.Format( _T("FindFirstFile failed (%d)\n"), GetLastError() );
      AfxMessageBox( m );
      return;
    }
    else
    {
      AfxMessageBox( d.cFileName );
      FindClose( h );
    }
  }
Run Code Online (Sandbox Code Playgroud)

编辑1:

首先,我尝试使用Windows实现_stat.它与非法字符"*"和"?"一起工作正常,但忽略了">",所以我介入并注意到实现特别注意了记录的通配符.我以FFF结束了.

编辑2:

我填写了两个错误表单:一个用于FFF,另一个用于_stat.我现在正在等待MS的回答.

我不认为窥视一些应该是黑盒子和推测的东西是正常的.因此,我的反对意见是基于"合同"所说的:"lpFileName [in]目录或路径,以及文件名,可以包含通配符,例如,星号(*)或问号(?) ......."我不是母语为英语的人.也许这意味着"这些不是唯一的通配符",也许不是.但是,如果这些不是唯一的通配符,它​​们应该列出所有(可能是它们).在这一点上,我认为MS的分辨率将是"按设计"或"无法修复".

关于_stat,我认为它是一个ISO函数,MSDN说:"返回值:如果获得文件状态信息,这些函数中的每一个都返回0."它没有说明有关通配符的事情,无论是否记录.我没看到_stat可以从"c:\ temp*"或"c:\ temp >>"中检索哪种信息.某人依赖当前行为的可能性极小,因此他们可能会发布修复程序.

编辑3:

微软已将_stat错误关闭为已修复. …

c++ windows winapi

13
推荐指数
1
解决办法
2455
查看次数

在 Windows 中使用冒号(“:”)创建文件名

图片1

我创建的文件的名称是“asdf:qwer”。

“asdf”文件已创建,我输入了一些单词。

'asdf' 容量为 0,Hex 没有内容。

图片_2

但我能得到言语。

  1. 他们从哪里来?

  2. Windows shell 中冒号(:) 的功能是什么?

ruby windows filesystems shell

1
推荐指数
1
解决办法
3197
查看次数

标签 统计

windows ×2

c++ ×1

filesystems ×1

ruby ×1

shell ×1

winapi ×1