繁体   English   中英

使用命令行参数从bat文件运行exe

[英]Run exe from bat file with command line arguments

我正在构建一个安装软件包,并具有一个安装目录(如果用户需要/需要,显然可以更改)。 bat安装目录的子目录中有一个bat文件,它将复制文件,然后运行一个程序,然后运行另一个程序。 目前看起来像这样。

@echo off
xcopy %~d0\dir-files\record\*.* "%~dp0input" /Y
10th-f-Downsampling.exe start /wait

cd..
start Dashboard.exe 

问题是我需要将命令行参数添加到下采样exe --max_old_space_size = 3000

问题是为了做到这一点(根据我目前对bat文件的了解,这是有限的)是创建快捷方式并以通常的Windows快捷方式输入命令行参数。 我无法创建相对快捷方式,也不确定如何做到最好。 有任何想法吗?

好吧,到目前为止,我已经设法创建了一个bat文件,该文件使用此脚本在同一目录中创建了一个快捷方式。

@echo off

set SCRIPT="%TEMP%\%RANDOM%-%RANDOM%-%RANDOM%-%RANDOM%.vbs"

echo Set oWS = WScript.CreateObject("WScript.Shell") >> %SCRIPT%
echo sLinkFile = "ShortcutName.lnk" >> %SCRIPT%
echo Set oLink = oWS.CreateShortcut(sLinkFile) >> %SCRIPT%
echo oLink.TargetPath = "MyApp.exe" >> %SCRIPT%
echo oLink.WorkingDirectory ="" >> %SCRIPT%
echo oLink.Save >> %SCRIPT%

cscript /nologo %SCRIPT%

del %SCRIPT%

但是我不确定如何将命令行参数包括到该文件中……如果有人可以给出一个令人惊奇的想法。

cmd行参数以%0%1%2的形式提供给您。 在当前代码中使用%~d0 ,您将从参数%0中拉出letter drive

该MS页面可能会为您提供帮助

奇怪的是,如果我单击该链接,该链接将起作用,但不适用于某些用户。 如果您要复制粘贴到您喜欢的浏览器中,请按以下步骤操作。 正如您在链接中看到的那样,这是从WindowsXP文档中提取的,它可以解释为什么链接充其量是片刻的。

https://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/percent.mspx?mfr=true

编辑似乎您想调用一个程序并在调用该程序时将其传递给参数。 并且您希望从bat文件启动程序。 这与我阅读标题的方式不同。

让我们从一些基础知识开始...为了参考起见,我们将说我今天使用的程序称为GetToWork.exe

我正在使用GetToWork.exe的程序使我能够以许多不同的方式启动它。

  • 我可以双击以某种形式启动程序的exe
  • 我可以从CMD行调用exe并传递参数,这样它就可以执行自动化操作,而无需执行任何操作。
    1. 如果我希望程序自己执行所有操作,则可以传递参数--DontAskMeAnything
    2. 如果我希望程序在对将被视为新文件的内容进行处理之前询问我,则可以传递参数--AskMeForNewFile
    3. 如果希望参数以其他方式执行此操作,则可以传递参数--DoItThisWayInstead

现在,我不是决定我可以传递哪些参数,也不会决定其结果的人。 实际上,参数是由创建程序的程序员定义的。 当他编写程序时,他决定将这些参数作为允许的参数,并且与它们相关的动作将作为他决定的动作。 程序员记录了这些参数,现在我只想使用它们,因为它们使我的生活更轻松。

为了触发参数行为,我需要在运行程序时将所述参数提供给程序。

  • 如果我想触发--DontAskMeAnything我会编写以下命令:

    GetToWork.exe --DontAskMeAnything

  • 如果我想触发--AskMeForNewFile ,那么我将编写以下命令:

    GetToWork.exe --AskMeForNewFile

  • 如果GetToWork.exe允许多个参数,则我可能会编写如下内容:

    GetToWork.exe --AskMeForNewFile --DoItThisWayInstead

现在...回到和您的程序。 您正在使用一个名为10th-f-Downsampling.exe 我们,我不知道那个程序。 我不知道该程序可能使用的参数是什么。 为了让您知道应该通过什么,您必须查找该程序的文档。 有时只用/?调用exe /? 足以获取参数列表。 同样,这取决于将程序制作为/?的程序员/? 仅仅是程序员允许的另一个参数。 /?的结果/? 通常是吐出可用的参数...

让我们分解您当前的代码

xcopy %~d0\dir-files\record\*.* "%~dp0input" /Y
  • 在这里,您正在调用的程序是xcopy
  • 您传递给xcopy的第一个参数是%~d0\\dir-files\\record\\*.*
  • 您传递的第二个参数是"%~dp0input"
  • 您传递的第三个参数是/Y

如果要进入命令提示符并运行此命令xcopy /? ,您将会看到一段文本,向您展示如何调用程序,以及可以传递的参数列表。 尽管参数通常通过名称来识别...它们的名称意义不大,因为一旦在程序中,程序员可能已经对其进行了编码,因此仅参数位置很重要,或者位置和名称很重要,或者他必须遵守的任何其他业务规则。 尽管在文档中提供了指导,但务必遵循指导。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM