2009-05-27 7 views
0

Я пытаюсь запустить программу, перетащив несколько файлов на .exe, а затем exe отправьте файлы в разные папки на основе правил и логики самой программы.Какой самый простой способ выполнить несколько файлов

проблема, с которой я столкнулся, заключается в том, что я делаю это через консольное приложение, существует ограничение на то, сколько информации может быть отправлено на exe за раз.

На компьютерах, работающих под управлением Microsoft Windows XP или более поздней версии, максимальная длина строки , которую можно использовать в командной строке является 8191 символов. На компьютерах под управлением Microsoft Windows 2000 или Windows NT 4.0 максимальная длина длины строки, которую вы можете использовать в командной строке, составляет 2047 символов.

Что было бы самым минималистичным способом решения этой проблемы? Я бы хотел, чтобы во избежание использования программы в фоновом режиме во все времена, если это было возможно.

+0

Все ли эти несколько файлов в одной папке? Являются ли файлы тезисов одинаковыми (одно и то же имя, одно и то же местоположение и т. Д.)? –

+0

не очень. основная идея состоит в том, что если у меня есть куча файлов на моем рабочем столе (pdfs .jpgs .mp3s .exe), которые накапливаются там в течение недели, я могу просто захватить их все и бросить на этот exe, где они тогда пойдут to mydocumetns/mypicutres mydocuments/pdfs mydocments/mymusic и т. д. – Crash893

+1

Если вы хотите гладкий, просто используйте только черные компьютеры. Возможно, тоже с наземными эффектами. – Kieveli

ответ

0

Вы можете написать «данные» в файл и иметь файл в качестве аргумента?

+0

Я не думаю, что запуск программы 1 для чтения в данных, которые сделают файл, который начнет программу 2, будет квалифицироваться как более простой способ сделать что-то. Кроме того, я бы просто столкнулся с тем же ограничением, что и программа1, неспособная читать во всех файлах. – Crash893

3

Вместо того, чтобы перетаскивать файлы в «.exe», возможно, вы могли бы создать «горячую папку», чтобы вставлять файлы. Вам нужно будет написать приложение для наблюдения за этой папкой (используя что-то вроде FileSystemWatcher) и обработать входящие файлы.

+0

«Я бы хотел избежать программы, работающей в фоновом режиме, если это вообще возможно», - это моя идея создания резервных копий. У меня уже есть прототип в работе, но просто кажется, что это пустая трата ресурсов, используется как 30 секунд в месяц. – Crash893

+0

. Вы не оставляете приложение постоянно работающим при наблюдении за папкой. Запустите его, когда, когда вы будете готовы отбросить файлы в «контрольной папке», уведомитель FileSystemWatcher поднимет событие, когда обнаружит новый файл, упавший в папке. – Mez

1

Это не C#, но вы можете написать расширение оболочки проводника, чтобы добавить «Файл маршрута» в контекстное меню по умолчанию, когда вы щелкните правой кнопкой мыши файл или выберите группу файлов (в любом месте, а не только в ограниченных в контексты, где вы можете увидеть свой исполняемый файл), поскольку этот API будет , вероятно, не ограничивает вас ограничениями длины аргумента командной строки.

Там. Гладкий, без фонового процесса. Единственным недостатком является то, что вы должны написать его как компонент COM.

+0

хорошая идея, есть ли у вас примеры? – Crash893

+0

Nah Я стараюсь избегать COM как чумы. Вот несколько быстрых поисковых запросов по ключевым словам. http://www.codeproject.com/KB/shell/shellextguide1.aspx – TheMissingLINQ

+0

Нет необходимости использовать COM; см. мой ответ ниже. – lavinio

2

Существует способ написать программу .net, которая отслеживает конкретную папку, используя класс FileSystemWatchter. Я написал example of some code to do this, называя продукт нашей компании, но вы можете использовать скелет, чтобы делать то, что хотите.

Идея заключается в том, что вы указываете на папку и подписываетесь на определенные события в этой папке (файлы, переименованные, добавленные, удаленные и т. Д.), Так что, когда эти события происходят, ваш код запускается. В промежутке ваша программа просто ждет.

Тогда вы могли бы просто создать папку на вашем рабочем столе, и, когда вы бросаете в нее вещи, вещи «волшебным образом» случаются.

A Visual Studio 2005 solution также находится на сайте.

Надеюсь, что это поможет.

+0

Я ценю помощь, но не то, что мне так хотелось (я должен указать, что я вернулся к FSW), но я рассматриваю вопрос, на что ответил тот факт, что вы не можете делать это так, как я этого хотел. благодаря – Crash893

Смежные вопросы