【问题标题】:C++/Windows - Meaning of: system("dir \\b *.dat > tmp.txt")C++/Windows - 含义:system("dir \\b *.dat > tmp.txt")
【发布时间】:2015-03-05 03:16:16
【问题描述】:

我正在处理一项任务,其中我将读取一些 .dat 文件,这些文件对应于一个看起来很僵硬的图表(有点像听到的节拍,但有更多的数据)。我的教授给了该类一个特定的代码行,以便发现当前目录中的所有 .dat 文件,如下所示:

system("dir \\b *.dat > tmp.txt");

我了解该声明中的大部分内容,但我很好奇"\\b" 在那里做什么,以及是否有必要。

有人知道"\\b" 在做什么吗? 感谢世界!

【问题讨论】:

  • 我认为你的教授犯了一个错误。在当前目录中获取与*.dat 匹配的文件的裸列表可能应该是system("dir /b *.dat > tmp.txt")
  • 通过您的评论以及来自 eryksun 的评论找到了答案。正如 eryksun 所说,应该是system("dir /b *.dat > tmp.txt"),这样我们才能得到一个裸列表。我将使用该裸列表来单独获取文件名并打开这些文件以从它们那里获取我需要的内容!谢谢大家!

标签: c++ windows system


【解决方案1】:

你的教授犯了一个错字:

转义的目录路径说明符将变为

\b

system() 调用解析作为参数传递的命令行时。

这将列出当前磁盘系统目录b 中的文件/目录。假设你在c:,这相当于打电话

> dir c:\b *.dat > tmp.txt

从命令行提示符。

如果您打算调用 dir with the /B option

/B |使用裸格式(没有标题信息或摘要)。

您只是不使用反斜杠 (\),而是使用 /

system("dir /b *.dat > tmp.txt");
         // ^

【讨论】:

  • 所以从你的意思来看,这就是说,而不是看到通常的 C:\Users\... 你会看到 C:\b\... 吗?
  • 通过您的评论以及来自 eryksun 的评论找到了答案。正如 eryksun 所说,应该是system("dir /b *.dat > tmp.txt"),这样我们才能得到一个裸列表。我将使用该裸列表来单独获取文件名并打开这些文件以从中获取我需要的内容!谢谢大家!
猜你喜欢
  • 2018-12-10
  • 1970-01-01
  • 1970-01-01
  • 2012-06-28
  • 1970-01-01
  • 1970-01-01
  • 2011-07-29
  • 2017-01-21
  • 1970-01-01
相关资源
最近更新 更多