Problém se spuštěním batch file ve VB   otázka

VB.NET

Dobrého dne,

pracuji na projektu, kde potřebuji spustit aplikaci přes batch, ale vyskytnul se mi poměrně vážný problém.

Když batch spustím normálně pomocí průzkumnímu tak funguje tak jak má, ale když se jej pokusím spustit v programu pomocí

        Shell(appdata + "run.bat")

nebo

        Process.Start(appdata + "run.bat")

tak mi to vypíše že systém nemůže najít položku C:\Users\Michal\AppData\Local\Temporary

Je možné, že si program daný batch přesune do nějaké svojí složky??

Program ten batch má celý i napsat, hodím Vám to sem, třeba to pomůže.

Imports System.Environment
Imports System.IO

Public Class Form1
    Dim appdata As String = GetFolderPath(SpecialFolder.ApplicationData) + "\.ML\"
    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Dim StreamWriter As StreamWriter
        StreamWriter = File.CreateText(appdata + "run.bat")
        StreamWriter.WriteLine("@echo off")
        StreamWriter.WriteLine("set APPDATA=%CD%\" + TextBox1.Text + "\")
        StreamWriter.WriteLine("start %CD%\wlauncherL.jar")
        StreamWriter.Close()
        Process.Start(appdata + "run.bat")
    End Sub
End Class

Když potom soubor run.bat spustím kliknutím myší vše jede jak má.

Děkuji za případnou pomoc.

Hezký den

s pozdravem Michal Navrátil

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Je možné, že si program daný batch přesune do nějaké svojí složky??

NE.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

ten adresar appdata je .....lokal\temporary<mezera>a neco dalsiho?

funguje to s jakymkoliv adresarem bez mezery?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Vzhledem k tomu že se batch chová jinak při spuštění myší a z programu, problémem by mohlo být toto:

Proměná %CD% obsahuje složku, odkud byl batch spuštěn. Pokud tedy máte batch v c:\batch a aplikaci v c:\app a spustíte batch z vaší aplikace, bude %CD%=C:\app. Spustíte-li jej normálně myší, tak %CD%=c:\batch.

Aktuální složku (%CD%) můžete ovlivnit při spouštění procesu nastavením WorkingDirectory.

dim info = new System.Diagnostics.ProcessStartInfo("appdata" + run.bat");
            info.WorkingDirectory = "C:\";

            var p = new System.Diagnostics.Process();
            p.StartInfo = info;
            p.Start();
nahlásit spamnahlásit spam 0 odpovědětodpovědět

Děkuji Vám,

toto mi sice vyřešilo problém s lokací, ale vyskytnul se další.

Když spustím batch s více RAM, třeba jen z 1 na 2Gb tak mi vypíše error, že tolik paměti tomu programu přidat nemůže.

Poustím-li program kurzorem, vše jede, jak má.

V počítači mám přitom dostatečnou paměť (16Gb RAM)

Nevíte, v čem by mohl být tento problém?

Předem děkuji za odpověď.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Řeším to nyní trochu jinak:

        Dim StreamWriter As StreamWriter
        Dim uvozovky As Char = ChrW(&H22)
        Dim appdata As String = GetFolderPath(SpecialFolder.ApplicationData) + "\GL\"
        StreamWriter = File.CreateText(appdata + "run.bat")
        StreamWriter.WriteLine("@echo off")
        StreamWriter.WriteLine("set APPDATA=" + TextBox1.Text + "\")
        StreamWriter.WriteLine(uvozovky + "%ProgramFiles%\Java\jre7\bin\java.exe" + uvozovky + " -Xmx" + ComboBox1.Text + "G -Xms" + ComboBox1.Text + "G -jar minecraft.jar")
        StreamWriter.WriteLine("pause")
        StreamWriter.Close()
        Process.Start("run.bat")

kdy textbox1.Text je složka, kde chci aby se aplikace spustila a ComboBox1.Text je číslo v Gb kolik RAM se má připsat.

Java mi prostě nedovolí připsat více jak 1Gb RAM, když jej ovšem spustím myší, vše jede jak má.

Nenapadá Vás nějaké řešení?

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback