GetModuleFileName是获得exe所在路径
以.bat方式启动一个exe后,哪个函数可以获得.bat所在路径的名称。注意是.bat所在路径,不是exe所在路径。在线等
9 个解决方案
#1
TCHAR pszCurDir[MAX_PATH];
GetCurrentDirectory(MAX_PATH, pszCurDir);
#2
请教一下,我发现这个函数获得的是.bat所在的文件夹,如何获取.bat全部路径,也就是文件名也连在后面?谢谢了。
#3
int main(int argc, char **argv)
{
if (argc >= 2)
{
printf("%s\n", argv[1]);
}
return 0;
}
批处理中这样调用:
youfile.exe "%~f0"
#4
通常API是不知道谁调用它的,咋办呢?追加一个标记调用者的参数吧,呵呵。
#5
可是我的exe程序是MFC的啊,入口函数是
_tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPTSTR lpCmdLine, int nCmdShow)
{
// call shared/exported WinMain
return AfxWinMain(hInstance, hPrevInstance, lpCmdLine, nCmdShow);
}
并没有您说的main(int argc, char **argv)的参数。如何获取.bat所在的包括.bat文件名的全路径呢?
#6
LPTSTR GetCommandLine(VOID)
这个API。
#7
除非你当值传入。你要么在bat里面
rem set Current_Path=%~dp0
%~dp0 就是路径。传入exe中。不然谁调用他,他自己又不管
rem set Current_Path=%~dp0
%~dp0 就是路径。传入exe中。不然谁调用他,他自己又不管
#8
这样也可以:
bat中这样调用:
批处理中启动一个进程,子进程启动后继承父进程的环境变量。
char pszParFile[MAX_PATH] = {0};
GetEnvironmentVariable("parfile", pszParFile, MAX_PATH);
printf("parfile=%s\n", pszParFile);
bat中这样调用:
set parfile=%~f0
D:\MFC编程\ConsoleApplication\Debug\ConsoleApplication.exe
批处理中启动一个进程,子进程启动后继承父进程的环境变量。
#9
楼上正解,非常感谢。GetCommandLine返回的是exe的路径,不是bat的路径哦。
#1
TCHAR pszCurDir[MAX_PATH];
GetCurrentDirectory(MAX_PATH, pszCurDir);
#2
请教一下,我发现这个函数获得的是.bat所在的文件夹,如何获取.bat全部路径,也就是文件名也连在后面?谢谢了。
#3
int main(int argc, char **argv)
{
if (argc >= 2)
{
printf("%s\n", argv[1]);
}
return 0;
}
批处理中这样调用:
youfile.exe "%~f0"
#4
通常API是不知道谁调用它的,咋办呢?追加一个标记调用者的参数吧,呵呵。
#5
可是我的exe程序是MFC的啊,入口函数是
_tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPTSTR lpCmdLine, int nCmdShow)
{
// call shared/exported WinMain
return AfxWinMain(hInstance, hPrevInstance, lpCmdLine, nCmdShow);
}
并没有您说的main(int argc, char **argv)的参数。如何获取.bat所在的包括.bat文件名的全路径呢?
#6
LPTSTR GetCommandLine(VOID)
这个API。
#7
除非你当值传入。你要么在bat里面
rem set Current_Path=%~dp0
%~dp0 就是路径。传入exe中。不然谁调用他,他自己又不管
rem set Current_Path=%~dp0
%~dp0 就是路径。传入exe中。不然谁调用他,他自己又不管
#8
这样也可以:
bat中这样调用:
批处理中启动一个进程,子进程启动后继承父进程的环境变量。
char pszParFile[MAX_PATH] = {0};
GetEnvironmentVariable("parfile", pszParFile, MAX_PATH);
printf("parfile=%s\n", pszParFile);
bat中这样调用:
set parfile=%~f0
D:\MFC编程\ConsoleApplication\Debug\ConsoleApplication.exe
批处理中启动一个进程,子进程启动后继承父进程的环境变量。
#9
楼上正解,非常感谢。GetCommandLine返回的是exe的路径,不是bat的路径哦。