我希望这个问题适合这个论坛。
我有一个独立的应用程序 - 一个.exe
名为的文件ratingsCalculator.exe
。当我手动打开它时,它首先要求我输入与应用程序位于同一文件夹中的 csv 文件的文件名。然后它要求输入一个值 (alpha),然后是第二个值 (beta) - 必须手动输入。输入 beta 值后,它会向我显示已创建输出文件的消息。
此屏幕截图是我调用的一个文件的示例,tennis.csv
其中我将 alpha 设置为 .3,将 beta 设置为 .1:
我想要做的是将许多 csv 文件放在一个文件夹中,每个文件的名称都不同。我想让这个应用程序使用相同的 alpha 和 beta 值运行所有文件。但是,我不想手动执行此操作,因为对于 1000 个 csv 文件来说,这会花费太长时间。
使用 Windows 7,将目录更改为应用程序和文件的位置后,我在命令行中尝试了此操作:
find -name "*.csv" -exec ratingCalculator {} \
不幸的是我收到的错误信息是:
"FIND: Parameter format not correct"
很明显,我无法正确添加参数,这就是我想知道该怎么做。
答案1
给出一个生成 InputTester.exe 的简单 C++ 应用程序:
#include <iostream>
void main() {
int a,b,c;
std::cout << "Number 1: ";
std::cin >> a;
std::cout << "Number 2: ";
std::cin >> b;
std::cout << "Number 3: ";
std::cin >> c;
}
然后您可以在与上述 exe 相同的位置创建一个 VBS 文件,如下所示:
dim objShell : set objShell = wscript.CreateObject("wscript.shell")
for i = 1 to 10
objShell.Run "InputTester.exe", 9
wscript.Sleep 500
objShell.SendKeys 1
objShell.SendKeys "{ENTER}"
wscript.Sleep 500
objShell.SendKeys 2
objShell.SendKeys "{ENTER}"
wscript.Sleep 500
objShell.SendKeys i & ".csv"
wscript.Sleep 500
objShell.SendKeys "{ENTER}"
next
本质上,它将密钥发送给应用程序。您可以调整循环中提供的睡眠和值,但这可以提供一种解决方案。