Automatycznie uruchamiaj aplikację wielokrotnie z plikami z tego samego folderu

0

Mam nadzieję, że to pytanie jest odpowiednie dla tego forum.

Mam samodzielną aplikację - an .exe plik o nazwie ratingsCalculator.exe. Kiedy otwieram go ręcznie, najpierw prosi mnie o wpisanie nazwy pliku csv w tym samym folderze co aplikacja. Następnie prosi o wartość (alfa), a następnie drugą wartość (beta) - które należy wprowadzić ręcznie. Po wprowadzeniu wartości beta pojawia się komunikat, że utworzono plik wyjściowy.

Ten zrzut ekranu jest przykładem pliku, który wywołałem tennis.csv gdzie ustawiam alpha na .3 i beta na .1:

enter image description here

Chcę, aby w folderze znajdowało się wiele plików csv z różnymi nazwami plików. Chcę uruchomić całą aplikację za pomocą tej samej wartości alfa i beta. Jednak nie chcę tego robić ręcznie, ponieważ w przypadku plików 1000 csv potrwa to zbyt długo.

W systemie Windows 7 próbowałem tego w wierszu poleceń po zmianie katalogu na lokalizację aplikacji i plików:

find -name "*.csv" -exec ratingCalculator {} \

Niestety pojawia się komunikat o błędzie:

"FIND: Parameter format not correct"

tak wyraźnie, że nie mogę poprawnie dodać parametrów i zastanawiam się, jak to zrobić.

jalapic
źródło
Wyglądasz na zagubionego cmd i bash.
DavidPostill

Odpowiedzi:

2

Biorąc pod uwagę prostą aplikację C ++, która generuje InputTester.exe:

#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;
}

Następnie możesz utworzyć plik VBS w tej samej lokalizacji co powyższy exe, który wygląda tak:

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

Zasadniczo wysyła klucze do aplikacji. Możesz dostosować wartości uśpienia i wartości w pętli, ale może to zaoferować jedno rozwiązanie.

Referencje: https://ss64.com/vb/run.html

HelpingHand
źródło
to działa świetnie - każda sugestia, jak automatycznie zamknąć wszystkie okna pod koniec procesu przy użyciu vbs?
jalapic
1
Po ostatnim wprowadzeniu możesz wysłać ctrl-c z: objShell.SendKeys "^(c)"
HelpingHand