簡體   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