2011-04-17 2 views
1

Я программно генерирую команду для отправки в cmd.exe с использованием Runtime.getRuntime.exec() из java.Как передать параметры файла tortoiseproc.exe через файл?

Команда TortoiseProc игнорировать команду вида

tortoiseproc /command:ignore /path:file1*file2*file3*...................filen 

Как вы можете видеть, параметр пути занимает несколько файлов и проблема возникает, когда эта строка превышает определенную длину ок. 8197 символов, как описано в microsoft KB для cmd.exe.

Обходной путь там говорит, что изменить программу так, чтобы она принимала параметры из файла, а не из строки командной строки. Кто-нибудь знает, как передавать параметры в файл tortoiseproc.exe через файл?

ответ

0

Нет, это невозможно. Однако в этом конкретном случае, это не имеет значения: вы можете разбить список файлов на несколько меньших и запустить многократное чередование. Пример:

tortoiseproc /command:ignore /path:file1*file2*file3*file4 
tortoiseproc /command:ignore /path:file5*file6*file7*file8 

и так далее, вплоть до файла н.

+0

Я думал, этой опции, но тогда это будет неэффективно, поэтому я решил использовать инструмент командной строки svn, чтобы установить свойство ignore, которое принимает шаблоны игнорирования из файла. svn propset игнорировать -F tmpfile. где tmpfile представляет файл с шаблонами игнорирования, разделенный символами новой строки. Спасибо за Ваш ответ. –

1

вы можете передать файл в формате utf16, причем каждый файл указан на отдельной строке.

Пройди путь к этому файлу с /pathfile:"path/to/file.txt"

+0

Как создать кодированный файл UTF16? Я попытался использовать PrintWriter pw = new PrintWriter (новый OutputStreamWriter (новый FileOutputStream (tempFile), Charset.forName ("UTF-16"))); но tortoiseproc возвратил ошибку. дальнейшие идеи? –

0

я имел такую ​​же проблему, и это мое решение, что:

using (var s = File.Create("D:\\p3.tmp")) 
{ 
    using (var sw = new StreamWriter(s, new UnicodeEncoding(false, false))) 
    { 
     sw.Write(@"D:\SourceCode\Utils\ProductProvider.cs" + '\n'); 
     sw.Write(@"D:\SourceCode\Utils\BillingProvider.cs"+ '\n'); 
    } 
} 

после того, как файл создан Я использую

TortoiseProc.exe /command:commit /pathfile:"D:\p3.tmp" /logmsg:"test log message" /deletepathfile 
Смежные вопросы