【问题标题】:C# - dynamic path to run BAT in subfolderC# - 在子文件夹中运行 BAT 的动态路径
【发布时间】:2019-08-17 10:35:10
【问题描述】:

您好,我需要您的帮助才能使用我新构建的 EXE .NET 表单运行两个 BAT 文件。文件夹结构是这样的:

..\游戏\语言\cz.bat

..\游戏\语言\en.bat

..\Form.exe

我需要我的“Form.exe”通过按下相应的按钮来运行这两个 BAT 文件。我知道它必须与动态路径有关,但遗憾的是我不知道如何设置它:(

    }

    private void Button1_Click(object sender, EventArgs e)
    {
        Process.Start (@"\Game\Language\CZ");
        this.Close();
    }

    private void Button2_Click(object sender, EventArgs e)
    {
        Process.Start(@"\Game\Language\EN");
        this.Close();
    }
}

为什么我需要这个?我会将我的游戏提供给其他玩家,他们可以在他们的 PC 中的任何位置解压缩存档,这些路径永远不会像 C:\Downloads\Game... 如果我将整个地址写入 CZ.bat 或EN.bat ofc,但我不能这样做,因为在另一台 PC 中路径会有所不同。

感谢您的任何提示。

【问题讨论】:

    标签: c# dynamic path


    【解决方案1】:

    你可以使用

    Application.ExecutablePath Application.UserAppDataPath

    动态路径

    see this Link ♥

    【讨论】:

    • 因为每个人电脑上的路径都不一样,所以可以通过这个属性动态查找和使用路径
    • MessageBox.Show(Application.ExecutablePath);测试一下这段代码就可以看到了
    • 谢谢你们,这个 ofc 指出了一些方法,我检查过了,但遗憾的是我不知道如何在我的情况下使用这两个命令,抱歉我没有 C# 技能,但我需要某种方式简化游戏翻译,一切就绪我只需要一个对话窗口供用户在两种语言中进行选择:(
    【解决方案2】:

    你应该使用Environment.CurrentDirectory 属性,它可以让你访问目录,你的可执行文件是从那里启动的。

    要获得动态路径,您可以使用Path.Combine 方法,将 CurrentDirectory 路径和语言 bat 文件的路径组合起来,如下所示:

    private void Button1_Click(object sender, EventArgs e)
    {
        Process.Start(Path.Combine(Environment.CurrentDirectory, @"\Game\Language\CZ.bat"));
        this.Close();
    }
    
    private void Button2_Click(object sender, EventArgs e)
    {
        Process.Start(Path.Combine(Environment.CurrentDirectory, @"\Game\Language\EN.bat"));
        this.Close();
    }
    

    【讨论】:

      猜你喜欢
      • 2014-01-22
      • 2018-07-15
      • 1970-01-01
      • 2017-05-25
      • 1970-01-01
      • 2014-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多