Golang获得执行文件的当前路径

运行环境:
golang1.4.2+win7x64
golang1.4.2+centos6.5×64

 1 package Helper
 2
 3 import (
 4     “os”
 5     “os/exec”
 6     “path/filepath”
 7     “strings”
 8 )
 9
10 /*获取当前文件执行的路径*/
11 func GetCurPath() string {
12     file, _ := exec.LookPath(os.Args[0])
13
14     //得到全路径,比如在windows下E:\\golang\\test\\a.exe
15     path, _ := filepath.Abs(file)
16
17     //将全路径用\\分割,得到4段,①E: ②golang ③test ④a.exe
18     splitstring := strings.Split(path, “\\”)
19
20     //size为4
21     size := len(splitstring)
22
23     //将全路径用最后一段(④a.exe)进行分割,得到2段,①E:\\golang\\test\\ ②a.exe
24     splitstring = strings.Split(path, splitstring[size-1])
25
26     //将①(E:\\golang\\test\\)中的\\替换为/,最终得到结果E:/golang/test/
27     rst := strings.Replace(splitstring[0], “\\“, “/”, size-1)
28     return rst
29 }
时间: 2024-10-23 20:27:55

Golang获得执行文件的当前路径的相关文章

php cli 模式下执行文件,require 加载路径错误

今天,同事突然告诉我,我写的一个做计划任务的php脚本执行总是不成功. 脚本本身很简单,里面只有包含了几个库文件并执行了一个函数,函数应该没有错误,这个函数在别处也调用过,没有问题.我在本地用浏览器访问页面,执行成功,看来没有问题,我有点怀疑是同事的计划任务的问题.我又打开命令行,用php直接执行脚本,这回报错了,是require 包含文件错误,看来是路径不对. 不明白是什么原因引起的,只是从报错来看是路径不对,我猜测是跟相对路径有关,于是把相对路径的全部改成绝对路径,再执行,问题解决. 在百度

go在Linux上编译Windows执行文件

参考:http://studygolang.com/topics/21 (1)首先进入go/src 源码所在目录,执行如下命令创建目标平台所需的包和工具文件. $ cd /usr/local/go/src$ CGO_ENABLED=0 GOOS=linux GOARCH=amd64 ./make.bash 如果是 Windows 则修改 GOOS 即可.$ CGO_ENABLED=0 GOOS=windows GOARCH=amd64 ./make.bash-------------------

SQL扫描并执行文件夹里的sql脚本

原文:SQL扫描并执行文件夹里的sql脚本 场景:项目数据库操作全部使用存储过程实现.每天都会有很多存储过程更新/增加,人工对测试环境中存储过程更新,会有一定概率出现遗漏,也麻烦!所以,需要一个工具将文件夹中所有存         储过程执行一次.实现:首先想到的是用c#,很简单,而且功能强大.        但是,我想尝试一下使用sql实现同样的功能,然后就发现了xp_cmdshell这个强大而又危险的东西!查询分析器执行,无需传入数据库用户名.密码,传入目录,就会按照脚本文件名排      

[Linux] 更新PATH环境变量或默认执行文件搜索路径

1.环境变量(PATH) 在Linux中,在执行命令时,系统会按照PATH的设置,去每个PATH定义的路径下搜索执行文件,先搜索到的文件先执行. 我们知道查阅文件属性的指令ls 完整文件名为:/bin/ls(这是绝对路径), 那你会不会觉得很奇怪:"为什么我可以在任何地方执行/bin/ls这个指令呢? " 为什么我在任何目录下输入 ls 就一定可以显示出一些讯息而不会说找不到该 /bin/ls 指令呢? 这是因为环境变量 PATH 的帮助所致呀! 当我们在执行一个指令癿时候,举例来说&

Linux中exec()执行文件系列函数的使用说明

函数原型: 描述:    exec()系列函数使用新的进程映像替换当前进程映像.    工作方式没有什么差别, 只是参数传递的方式不同罢了. 说明:    1. 这6个函数可分为两大类: execl()系列 和 execv()系列.    2. `l' 是指把所有传递给程序的参数依次列(list)出来.        `v' 是指把所有参数放到容器(数组, vector)中再一次性传入.         不论是list出来还是vector them all, 参数的最后一个都必须为空指针((ch

关于如何便捷地以命令行的形式打开exe执行文件和进入文件夹

经常以命令行的形式打开exe执行文件的同学应该知道,直接双击是会闪退,正确的打开方式是这样:运行cmd.exe--"盘符:"--"cd 路径"--"执行文件.exe". 我这里提供一个便捷的方法,原理和上面的一样:打开注册表,在"HKEY_CLASSES_ROOT\*\"下面新建项名为"shell"的项,在项"shell"下新建项名为"通过cmd打开此文件"的项,在项

matlab的m程序转执行文件exe

转换主要有两步: 第一步 设置编译器 在命令窗口输入 mbuild -setup 根据提示操作即可,.如下图我的设置 第二步 转换执行文件 命令行输入 mcc -m main   即可(输入 mcc -e main  文件执行时没有黑色窗口) 等待时间有些长,其中main 是主程序的函数名根据你的m文件不同需要更改. 在m文件的 开头写 function main 注:如果需要在没有安装matlab环境下运行需要安装软件MCRInstaller.exe  软件在MATLAB安装文件夹中 %\MA

设置当前exe执行文件为进程工作目录

设置当前exe执行文件为进程工作目录 两种办法: 1,   API void _splitpath( const char *path, char *drive, char *dir, char *fname, char *ext ); 这个函数将文件全名(带路径)分解成路径名,文件名,后缀名. 2, API BOOL PathRemoveFileSpec(           LPTSTR pszPath ); 使用例子: #include <windows.h> #include <

MFC修改窗口无标题和标题信息,修改执执行文件图标

一.创建MFC后 窗口显示的是 无标题-工程名 修改方法在网上看到了几种,下面介绍下比较简单的一种: 1.在MianFrame.c文件中找到这个函数 BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) 2.在函数中添加这样一句可以 修改标题名称 m_strTitle = "我的标题v1.0"; 3.在函数中添加如下代码可以去除无标题几个字 cs.style &= ~FWS_ADDTOTITLE ;//防止MFC在窗口标题