我正在以编程方式使用java中的Runtime.getRuntime.exec()生成要提交给cmd.exe的命令。
命令是tortoiseproc ignore形式的命令
tortoiseproc /command:ignore /path:file1*file2*file3*...................filen
正如您所看到的,path参数需要大量文件,当此字符串超过某个长度时会出现问题。 cmd.exe的Microsoft KB中记录的8197个字符。
那里的解决方法是修改程序,使其接受文件而不是命令行字符串中的参数。有人知道如何通过文件将参数传递给tortoiseproc.exe吗?
答案 0 :(得分:1)
您可以传递utf16格式的文件,每个文件都单独列出。
使用/pathfile:"path/to/file.txt"
答案 1 :(得分:0)
不,那是不可能的。但是,在这种特定情况中,无关紧要:您可以将文件列表拆分为多个较小的文件列表,并多次运行tortoiseproc。例如:
tortoiseproc /command:ignore /path:file1*file2*file3*file4
tortoiseproc /command:ignore /path:file5*file6*file7*file8
依此类推,直至文件 n 。
答案 2 :(得分: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