【问题标题】:what is the sleakest way to proccess multiple files处理多个文件的最巧妙方法是什么
【发布时间】:2009-05-27 16:43:10
【问题描述】:

我正在尝试通过将多个文件拖到 .exe 上来启动程序,然后让 exe 根据程序本身的规则和逻辑将文件发送到不同的文件夹。

我遇到的问题是我通过控制台应用程序执行此操作,一次可以向 exe 发送多少信息是有限制的。

在运行 Microsoft Windows 的计算机上 XP 或更高版本,最大长度 您可以在命令中使用的字符串 提示符为 8191 个字符。在 运行 Microsoft Windows 的计算机 2000 或 Windows NT 4.0,最大 您可以使用的字符串的长度 在命令提示符下是 2047 字符。

解决这个问题最简单的方法是什么?如果可能的话,我想避免让程序一直在后台运行。

【问题讨论】:

  • 所有这些多个文件都在同一个文件夹中吗?这些文件是否总是相同的(相同的名称、相同的位置等)?
  • 并非如此。主要的想法是,如果我的桌面上有一堆文件(pdfs .jpgs .mp3s .exe's)在一周内累积在那里,我可以将它们全部抓取并放在这个 exe 上,然后它们会去转至 mydocumetns/mypicutres mydocuments/pdfs mydocments/mymusic 等
  • 如果你想要时尚,只使用黑色电脑。也许也有地面效应。

标签: c# command-line batch-file


【解决方案1】:

也许您可以创建一个“热文件夹”来放置文件,而不是将文件拖到“.exe”。你需要编写你的应用程序来监控这个文件夹(使用类似FileSystemWatcher)并处理传入的文件。

【讨论】:

  • "如果可能的话,我想避免在后台运行程序" - 这是我的后备想法,我已经有一个原型在制作中,但这似乎是在浪费资源当它可能每月使用 30 秒时进行此运行
  • 在监视文件夹时,您不必让应用程序一直运行。当您准备好将文件放入“监视文件夹”时启动它,FileSystemWatcher 通知程序将在检测到文件夹中放入任何新文件时引发事件。
【解决方案2】:

有一种方法可以编写一个使用 FileSystemWatchter 类监视特定文件夹的 .net 程序。我写了一个example of some code to do this 调用我们公司的产品,但你可以使用骨架来做你想做的事。

这个想法是您指向一个文件夹并订阅该文件夹上的某些事件(文件重命名、添加、删除等),这样当这些事件发生时,您的代码就会被触发。在这两者之间,您的程序只是等待。

然后你可以让那个文件夹成为你桌面上的一个文件夹,当你把东西放进去时,事情就会“神奇地”发生。

Visual Studio 2005 solution 也在网站上。

希望这会有所帮助。

【讨论】:

  • 我很感激你的帮助,但这不是我想要的(我应该指出我确实回到了 FSW)但我认为这个问题的答案是你不能这样做我想要的方式。谢谢
【解决方案3】:

它不是 C#,但是当您右键单击文件或选择一组文件(任何地方,不仅限于您可以看到可执行文件的上下文),因为此 API 可能不会将您限制在命令行参数长度限制中。

那里。流畅,没有后台进程。唯一的缺点是您必须将其编写为 COM 组件。

【讨论】:

【解决方案4】:

您可以将“数据”写入文件并将文件作为参数吗?

【讨论】:

  • 我不认为启动程序 1 以读取数据,从而生成将启动程序 2 的文件将有资格作为一种更简单的方法来做事。我也会遇到同样的限制,因为 program1 无法读取所有文件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-26
  • 1970-01-01
  • 2018-12-03
  • 2011-02-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多