在目录中打开随机文件(在 cmd 中?)- 类 C++ 还是类 C#?

Open random file in directory (in cmd?) - C++-like or C#-like?


我编写 C# (.NET) 程序和 C++(在 Notepad++ 中)脚本。

我想编写一个程序,在 运行 所在的目录中打开一个随机文件,在 windows 上使用 cmd。 例如:

C:\test > random

将打开 C:\test\song1.mp3C:\test\song2.mp3

这可能吗?

如果是,我应该使用哪种语言:C++ 还是 C#? (否则)
(不是什么更好,以免我的问题被感动,而是什么更合适)

C++ 是否支持文件系统? (找不到任何简单的库)
它能知道它 运行 在哪个目录吗?
C# 可以是来自 cmd 的 运行 吗?或者它是 IDE 依赖的,因此是不可能的?

如果没有,(没有编译就无法从cmd 运行)我更喜欢写一个windows形式 项目。

又来了,C#.NET 还是 C++Builder? (否则)
(再说一遍,不是更好,而是更合适)

对不起我的无能。感谢反馈。

(欢迎大家提出更好的意见)

也可以在 c# 和 c++ 中完成。

在 c++ 中,您可以使用 FindFirstFile 和 FindNextFile API 来查找文件。

这是可能的。这里的方案(C#实现):

从当前目录获取所有文件

  var files = Directory
    .EnumerateFiles(Directory.GetCurrentDirectory())
    //.Where(file => ...) // <- to filter out some files
    .ToList();

files获取随机文件:

  private static Random s_Generator = new Random();
  ...
  String file = files[s_Generator.Next(files.Count)];

要打开 file,请注意 shell 执行 模式:让 Window 了解文件的打开方式(即 txt 通过记事本,mp3 通过媒体播放器等)

  ProcessStartInfo info = new ProcessStartInfo(file) {
    UseShellExecute = true
  };

  using (var process = Process.Start(info)) {
    //process.WaitForExit(); // <- to wait for 
  }