第一步:准备好用于输入的文件list.txt,每次一行,形如:
20
100
"data.1.txt"
20
100
"data.2.txt"
保存为list.txt
注意,如果运行100次,每次输入3回,则list.txt应有300行。(输入内容有规律的话,也可以用批处理生成list.txt)
第二步:
(1)如果AA.exe本身是命令行程序的话,批处理文件a.bat这样写就可以了:
@echo off
(for /l %%i in (1,1,100) do AA.exe)<list.txt
(2)如果AA.exe是带有图形界面的程序的话,那就有点复杂了。我能想到的就是模拟按键输入,不知道还有没有其他好的方法。批处理文件a.bat如下:
@echo off
set cnt=100
set num=3
set "title=输入提示"
set time1=2
set time2=3
(for /l %%i in (1,1,%cnt%) do (
start "" AA.exe
ping -n %time1% 127.1 >nul
for /l %%j in (1,1,%num%) do (
set /p str=
setlocal enabledelayedexpansion
set "str=!str:"=""!"
mshta vbscript:clipboarddata.setdata("text","!str!"^)(close^)
endlocal
mshta vbscript:execute("document.write:With CreateObject(""Wscript.shell""):.AppActivate(""%title%""):.sendkeys(""^v~""):end with:self.close"^)
ping -n %time2% 127.1 >nul
)))<list.txt
exit
说明:
第二行cnt的值100:AA.exe要循环运行的次数。
第三行num的值3:AA.exe运行后会的输入次数。
第四行title的值"窗口标题":输入提示窗口的标题内容。这个是关键!如果提示窗口每次都不一样的话,这个批处理还需要修改一下。
第五行time1的值2:AA.exe启动完成所需的秒数。
第六行time2的值3:输入提示窗口相隔的秒数,最小为3。
要在批处理中调用exe程序并将参数传递给其他文件,可以使用以下步骤:
在批处理文件中使用start命令调用exe程序,例如:
sql
start "My Program" "C:\Program Files\MyProgram\MyProgram.exe"
这会启动名为"My Program"的窗口,并执行"C:\Program Files\MyProgram\MyProgram.exe"可执行文件。
如果要将参数传递给exe程序,可以在exe程序路径后面加上参数,例如:
sql
start "My Program" "C:\Program Files\MyProgram\MyProgram.exe" arg1 arg2 arg3
这会将三个参数arg1、arg2和arg3传递给MyProgram.exe程序。
在exe程序中,可以使用命令行参数获取批处理传递的参数。在C++中,可以使用main函数的参数来获取这些参数,例如:
c++
int main(int argc, char* argv[]){ // 获取参数个数
int argCount = argc // 获取第一个参数(即argv[0]为程序名称,argv[1]开始才是传递的参数)
char* arg1 = argv[1] // 获取第二个参数
char* arg2 = argv[2] // 获取第三个参数
char* arg3 = argv[3] // ...}
这样就可以将批处理传递的参数在exe程序中使用了。
需要注意的是,命令行参数的类型都是字符串类型,因此需要根据实际情况进行转换。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)