通过批处理文件运行.exe文件并传递参数

4

我有一个.exe文件,当我从命令行运行它时,需要输入两个参数:

test_app.exe -vid.avi -data.txt

如何通过批处理脚本启动.exe文件,并将参数传递给它?

如果我有多个需要通过START传递给.exe文件的.avi.txt文件,我该如何设置一个变量,使它可以每次取出两个文件进行配对(将每个.avi与其对应的.txt配对)?

假设每对.avi.txt都具有相同的名称,但显然具有不同的扩展名。

我需要编写以下内容:

@ECHO OFF
START test_app.exe -vid.avi -data.txt
pause

但参数应该是变量,每次处理一对参数通过.exe时都会递增,以便循环遍历CWD中的所有文件。

尝试这样做,但似乎START不起作用?

@echo off
for %%a in (*.avi) do (
START Tester.exe -%%a -%%~na.txt
)
pause
2个回答

3

尝试这个,它适用于以AVI为主扩展名,您可以更改此内容:

@echo off &setlocal enabledelayedexpansion
for %%i in (*.avi) do (
    set "line="
    for %%j in ("%%~ni.*") do set line=!line! -"%%~j"
    start "" test_app.exe !line!
)

.txt文件也被添加到!line!中吗?对我来说有点困惑,因为我几乎没有任何经验,抱歉。 - MaxPower
所有同名文件都在同一行上,例如:vid.avi、vid.txt、vid.dta。你需要在一行上使用哪些文件? - Endoro
每一行都需要启动exe并给它两个参数...avi和txt文件。 - MaxPower
参数从哪里来? - Endoro
从当前目录中获取。它有一堆avi和txt文件。每个avi+txt对共用相同的名称。 - MaxPower
@MaxPower 是的,这是我的代码:搜索AVI文件并收集所有同名文件,将它们放在一行上。 - Endoro

2

尝试将此应用于您的avi文件。它只会回显一堆命令,您可以看到它的作用。-符号似乎有点奇怪,但我将其与名称一起包含。

@echo off
for %%a in (*.avi) do (
echo exe.file "-%%a" "-%%~na.txt"
)
pause

我需要使用这些参数实际启动exe文件,我不明白echo在这里如何帮助...如果我完全错过了重点,请原谅。 - MaxPower
你没有提供一个有效的命令行 - 但我提供了启动带有两个文件的exe的代码。你只需要替换exe文件名,并删除echo,假设"-filename.avi" "-filename.txt"是你需要用来输入到exe文件中的内容。echo是为了向你展示代码正在执行什么操作。 - foxidrive
你的命令行看起来有问题。开关不正常。MOITester.exe在谷歌上查不到,所以我无法帮您确定语法是什么。 - foxidrive
MOITester只是一个随机的名称。我不明白你所说的开关不正常是什么意思。我只是想调用tester.exe并每次传递两个参数,一个是.avi文件,另一个是.txt文件。 - MaxPower
test_app.exe -vid.avi -data.txt 这个对你来说可行吗?这是你提供的信息,如果不可行,那么我提供的代码也不会起作用。请使用你的可执行文件展示对你有效的操作。 - foxidrive
这个"test_app.exe -vid.avi -data.txt"可以通过命令行工作。但是通过批处理文件,我需要使用START,我想...这就是不起作用的地方。我只能使用命令行一个一个地来完成它。我试图做的是自动化这个过程,使它在当前目录中运行所有文件。 - MaxPower

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接