You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取调用PATH中EXE文件的命令行启动路径?

我来帮你搞定这个问题!你的核心需求是让create_hello程序准确获取用户调用它时的命令行工作目录(而不是程序自身存放的目录),然后在这个路径下创建hello.txt文件。下面分几种常见编程语言给出具体实现方案:

1. C/C++ 实现

在C/C++中,你可以使用getcwd()函数来获取当前工作目录(也就是用户调用程序时所在的路径),然后拼接文件名创建文件。示例代码如下:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

int main() {
    // 获取当前工作目录
    char cwd[1024];
    if (getcwd(cwd, sizeof(cwd)) == NULL) {
        perror("getcwd failed");
        return 1;
    }

    // 拼接hello.txt的完整路径
    char file_path[1024];
    snprintf(file_path, sizeof(file_path), "%s/hello.txt", cwd);

    // 创建并打开文件(如果不存在则创建,存在则清空)
    FILE *file = fopen(file_path, "w");
    if (file == NULL) {
        perror("fopen failed");
        return 1;
    }

    // 可选:写入内容
    fprintf(file, "Hello World!\n");
    fclose(file);

    printf("Successfully created hello.txt at: %s\n", cwd);
    return 0;
}

编译后把可执行文件放到PATH包含的目录(比如/usr/local/bin),不管你在哪个目录调用create_hello,都会在当前目录生成hello.txt。

2. Python 实现

Python里直接用os.getcwd()获取当前工作目录,然后用open()函数创建文件即可:

import os

def main():
    # 获取当前工作目录
    cwd = os.getcwd()
    file_path = os.path.join(cwd, "hello.txt")

    # 创建文件并写入内容
    with open(file_path, "w") as f:
        f.write("Hello World!\n")
    
    print(f"Successfully created hello.txt at: {cwd}")

if __name__ == "__main__":
    main()

把脚本保存为create_hello,加上可执行权限(chmod +x create_hello),放到PATH目录下就可以使用了。

3. Shell 脚本实现

如果是Shell脚本,那就更简单了——脚本默认就是在当前工作目录执行的,直接创建文件即可:

#!/bin/bash

# 直接在当前工作目录创建hello.txt
touch hello.txt
# 可选:写入内容
echo "Hello World!" > hello.txt

echo "Successfully created hello.txt at: $(pwd)"

同样给脚本加可执行权限,放到PATH目录,调用时就会在当前目录生成文件。

关键提醒

很多开发者容易混淆两个路径:

  • 程序自身的存放路径(比如/usr/local/bin/create_hello):可以通过argv[0](C)、sys.argv[0](Python)获取,但这不是你需要的。
  • 用户调用程序时的当前工作目录:这才是你要用来创建文件的路径,上面的方案都是获取这个路径的正确方式。

内容的提问来源于stack exchange,提问作者frick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:37:45