Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

[Solved] Visual Basic .Net uruchamianie skryptów w CMD

scarman20 19 Apr 2022 10:05 162 10
  • #1
    scarman20
    Level 12  
    Witam. Nie jestem programistą i potrzebuję pomocy kogoś bardziej zaznajomionego w temacie. Otóż chcę stworzyć bardzo prosty program w Visual Studio 2022, program ten zawiera np. przycisk za pomocą którego chcę uruchomić jakiś skrypt w cmd, dla przykładu cichą instalację adobe readera. W tym celu mam utworzony plik o nazwie "acrobat.bat" a jego zawartością jest linijka:
    Code:
    AdbeRdr11000_pl_PL.exe /sAll /rs /msi EULA_ACCEPT=YES
    Po uruchomieniu tego pliku Adobe Reader instaluje się bez żadnych komunikatów. Teraz chciałbym aby ten plik wykonywał się po stworzeniu przycisku Button w programie Visual Studio. Niby wszystko jest zrobione tak jak trzeba ale skrypt nie wykonuje się. Pojawia się na chwilę okienko CMD ale dalej cisza. Zamieniłem zawartość pliku adode.bat na wpis: "ping www.google.pl" i wtedy po wciśnięciu przycisku pojawia się właściwa odpowiedź. Dlaczego niektóre skrypty działają a inne nie? Próbowałem różnych komend w VB ale każda kończy się niepowodzeniem. Obecnie kod dotyczący przycisku wygląda następująco:
    Code:
    private void button10_Click(object sender, EventArgs e)
    
            {
                Process.Start(@"data\adobe.bat");
            }

    gdzie plik adobe.bat znajduje się w katalogu o nazwie data znajdującym się obok pliku exe.

    Z góry dziękuję za sugestie.
  • #2
    kinggustav
    Level 26  
    Dawno tego nie robiłem, ale coś mi się wydaje, że musisz wywołać coś, co będzie interpretowało tego batcha, czyli np. cmd (ja robiłem jeszcze z command.com) z parametrem wskazującym ten plik. Jaki to parametr to nie pamiętam, musisz sobie poszukać. Większość programów M$ (i nie tylko) wywołana z /? lub /help pokaże listę swoich parametrów wywołania.

    Dodano po 5 [minuty]:

    A dlaczego nie wywołasz wprost tej linijki instalującej? Jest już gotowa. I jeszcze jeden drobiazg: przydałaby się ścieżka do pliku. Domyślne raczej nie działają, ale może nie mam racji.
  • #3
    PRL
    Level 40  
    Code: vbscript
    Log in, to see the code
  • #4
    scarman20
    Level 12  
    PRL wrote:
    Code: vbscript
    Log in, to see the code


    Ważność Kod Opis Projekt Plik Wiersz Stan pominięcia
    Błąd CS1009 Nierozpoznana sekwencja ucieczki WindowsFormsApp1 C:\WindowsFormsApp1\Form1.cs 67 Aktywne
    Ważność Kod Opis Projekt Plik Wiersz Stan pominięcia
    Błąd CS0103 Nazwa „Shell” nie istnieje w bieżącym kontekście WindowsFormsApp1 C:\WindowsFormsApp1\Form1.cs 67 Aktywne
  • #5
    PRL
    Level 40  
    Quote:
    private void


    W czym Ty to piszesz??? To jest C#, a nie VB.
  • #6
    scarman20
    Level 12  
    PRL wrote:
    Quote:
    private void


    W czym Ty to piszesz??? To jest C#, a nie VB.


    Masz rację, naotwierałem tyle tych projektów w Visual Studio że sam się pogubiłem. Obecnie mam otwarty projekt w C#, nie chciałem .NET ponieważ chciałbym uruchamiać program na różnych komputerach bez konieczności instalacji bibliotek.
  • #7
    PRL
    Level 40  
    Quote:
    hciałbym uruchamiać program na różnych komputerach bez konieczności instalacji bibliotek


    No to właśnie masz .bat. Co Ty kombinujsz?
  • #8
    scarman20
    Level 12  
    Mam .bat, ale chciałbym stworzyć do tego prosty program okienkowy który te .bat'y i inne komendy np wpisy do rejestru, będzie uruchamiał z poziomu prostego programiku graficznego, a nie klikając na plik .bat. Ma mi to ułatwić np instalowanie pakietu oprogramowania na danym komputerze, zamiast instalować wszystko ręcznie, chciałbym jednym kliknięciem wybrać czy ma instalować pełny pakiet oprogramowania, czy poszczególne programy, bez konieczności klikania w "dalej" etc...
    Chyba ta komenda będzie działać tak jak chciałem:
    Code:
     System.Diagnostics.Process.Start("adobe.bat");
  • #9
    JacekCz
    Level 39  
    scarman20 wrote:
    Ma mi to ułatwić np instalowanie pakietu oprogramowania na danym komputerze, zamiast instalować wszystko ręcznie,


    Spodziewasz się, że "pojawienie się" programu .NET Framework na komputerze jest lekkie, łatwe i przyjemne ? Skąd wiesz, ze czegoś nie tzreba będzie dociągnąć?
  • #10
    scarman20
    Level 12  
    Program ma działać jedynie na systemach Windows 10/11 i ma za zadanie uruchamiać kilka prostych komend. We niewłaściwościach projektu mam ustawioną strukturę .NET Framework 4.7.2 i z tego co zauważyłem program uruchamia się na czystych Windowsach 10 oraz 11 bez instalowania czegokolwiek i to mi wystarczy.
    Ale pojawił się kolejny problem. Chciałbym aby w folderze głównym był mój program "program.exe" a w folderze podrzędnym o nazwie "DATA" był skrypt adobe.bat oraz program AdbeRdr11000_pl_PL.exe. Jeśli skrypt oraz program znajdują się w tym samym folderze co program - skrypt uruchamia się prawidłowo i instaluje aplikację. Jeśli natomiast ustawię ścieżkę do folderu podrzędnego - wtedy uruchamia się jedynie przez chwilę okienko CMD, po czym znika i program się nie instaluje. Wiem że to szczegół ale jeśli ktoś zna rozwiązanie to proszę o podzielenie się nim.
    Oto kod do ścieżki który nie działa prawidłowo:
    Code:
    System.Diagnostics.Process.Start(@"DATA\adobe.bat");

    a oto kod który działa:
    Code:
    System.Diagnostics.Process.[tr][/tr]Start(adobe.bat");
  • #11
    scarman20
    Level 12  
    Program ma działać jedynie na systemach Windows 10/11 i ma za zadanie uruchamiać kilka prostych komend. We niewłaściwościach projektu mam ustawioną strukturę .NET Framework 4.7.2 i z tego co zauważyłem program uruchamia się na czystych Windowsach 10 oraz 11 bez instalowania czegokolwiek i to mi wystarczy.
    Ale pojawił się kolejny problem. Chciałbym aby w folderze głównym był mój program "program.exe" a w folderze podrzędnym o nazwie "DATA" był skrypt adobe.bat oraz program AdbeRdr11000_pl_PL.exe. Jeśli skrypt oraz program znajdują się w tym samym folderze co program - skrypt uruchamia się prawidłowo i instaluje aplikację. Jeśli natomiast ustawię ścieżkę do folderu podrzędnego - wtedy uruchamia się jedynie przez chwilę okienko CMD, po czym znika i program się nie instaluje. Wiem że to szczegół ale jeśli ktoś zna rozwiązanie to proszę o podzielenie się nim.
    Oto kod do ścieżki który nie działa prawidłowo:
    Code:
    System.Diagnostics.Process.Start(@"DATA\adobe.bat");

    a oto kod który działa:
    Code:
    System.Diagnostics.Process.[tr][/tr]Start(adobe.bat");


    Dodano po 28 [minuty]:

    Temat rozwiązany. Wymagana była edycja pliku adobe.bat w którym należało podać przedrostek DATA mimo że jest w tej samej lokalizacji co plik. Dziękuję wszystkim za zainteresowanie tematem