Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 如何从BAT文件运行具有超长参数的程序?_Powershell_Batch File - Fatal编程技术网

Powershell 如何从BAT文件运行具有超长参数的程序?

Powershell 如何从BAT文件运行具有超长参数的程序?,powershell,batch-file,Powershell,Batch File,基本上,我需要从一个bat文件运行一个程序(如果可以的话,它是一个java程序),这个bat文件有非常长的参数,大约9000个符号。问题是,它似乎将命令行截断为大约8000个符号。 如果可以的话,我不介意改用powershell。 提前谢谢。(不,没有办法缩短参数)您可以使用PowerShell中的启动进程: $argument = "This will exceed the 8191 character limitation" * 200 Start-Process java.exe -Arg

基本上,我需要从一个bat文件运行一个程序(如果可以的话,它是一个java程序),这个bat文件有非常长的参数,大约9000个符号。问题是,它似乎将命令行截断为大约8000个符号。 如果可以的话,我不介意改用powershell。
提前谢谢。(不,没有办法缩短参数)

您可以使用PowerShell中的
启动进程

$argument = "This will exceed the 8191 character limitation" * 200
Start-Process java.exe -ArgumentList "-jar","path\to.jar",$argument

在Windows上,命令行的最大长度为32767个字符。(8191个字符的限制是由cmd.exe强加的。)你的“符号”有多大?如果它们平均有几个字符长,并且您有9000个符号,那么无论您使用什么命令行解释器,您都会达到Windows限制。@KlitosKyriacou:在Windows用户界面中,命令行是给cmd.exe执行命令的行,这样的行的限制为8192个字符。如果有其他更长的“命令行”不能提供给cmd.exe,那么这样的信息肯定是无用的…@Aacini为什么它们是无用的?cmd.exe不是Windows上唯一可能的命令行。您可以编写一个将32Kb命令行传递给另一个应用程序的应用程序-此处不使用cmd.exe。显然不是来自bat文件。但是如果OP说他对Powershell也很满意,那么这意味着他很高兴不使用bat文件(因为Powershell不使用bat文件)有趣!如问题中所述,如何从BAT文件使用此方法?可以使用中间文件保存命令行,BAT文件将文件名传递给Powershell脚本,然后Powershell脚本将该文件的内容放在命令行上。