有谁知道,以.bat方式启动一个exe后,哪个函数可以获得.bat所在路径的名称。注意是.bat所在路径,不是exe所在路径。在线等

时间:2022-11-26 10:29:33
如题
GetModuleFileName是获得exe所在路径
以.bat方式启动一个exe后,哪个函数可以获得.bat所在路径的名称。注意是.bat所在路径,不是exe所在路径。在线等

9 个解决方案

#1



TCHAR pszCurDir[MAX_PATH];
GetCurrentDirectory(MAX_PATH, pszCurDir);

#2


引用 1 楼 BeanJoy 的回复:
C/C++ code?12TCHAR pszCurDir[MAX_PATH];GetCurrentDirectory(MAX_PATH, pszCurDir);


请教一下,我发现这个函数获得的是.bat所在的文件夹,如何获取.bat全部路径,也就是文件名也连在后面?谢谢了。

#3


引用 2 楼 wangchaocug 的回复:
引用 1 楼 BeanJoy 的回复:C/C++ code?12TCHAR pszCurDir[MAX_PATH];GetCurrentDirectory(MAX_PATH, pszCurDir);

请教一下,我发现这个函数获得的是.bat所在的文件夹,如何获取.bat全部路径,也就是文件名也连在后面?谢谢了。


int main(int argc, char **argv)
{
if (argc >= 2)
{
printf("%s\n", argv[1]);
}

return 0;
}


批处理中这样调用:
youfile.exe "%~f0"

#4


通常API是不知道谁调用它的,咋办呢?追加一个标记调用者的参数吧,呵呵。

#5


引用 3 楼 BeanJoy 的回复:
引用 2 楼 wangchaocug 的回复:引用 1 楼 BeanJoy 的回复:C/C++ code?12TCHAR pszCurDir[MAX_PATH];GetCurrentDirectory(MAX_PATH, pszCurDir);

请教一下,我发现这个函数获得的是.bat所在的文件夹,如何获取.bat全部路径,也就是文件名也连在后面?谢谢了。
C/C……



可是我的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


引用 5 楼 wangchaocug 的回复:
引用 3 楼 BeanJoy 的回复:引用 2 楼 wangchaocug 的回复:引用 1 楼 BeanJoy 的回复:C/C++ code?12TCHAR pszCurDir[MAX_PATH];GetCurrentDirectory(MAX_PATH, pszCurDir);

请教一下,我发现这个函数获得的是.bat所在的文件夹,如何获取.bat全部路径,也就……

LPTSTR GetCommandLine(VOID)

这个API。

#7


除非你当值传入。你要么在bat里面

rem set Current_Path=%~dp0

%~dp0 就是路径。传入exe中。不然谁调用他,他自己又不管

#8


这样也可以:

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


引用 8 楼 BeanJoy 的回复:
这样也可以:
C/C++ code?123char pszParFile[MAX_PATH] = {0};GetEnvironmentVariable("parfile", pszParFile, MAX_PATH);printf("parfile=%s\n", pszParFile);
bat中这样调用:
C/C++ code?12set parfile=%~f0……


楼上正解,非常感谢。GetCommandLine返回的是exe的路径,不是bat的路径哦。

#1



TCHAR pszCurDir[MAX_PATH];
GetCurrentDirectory(MAX_PATH, pszCurDir);

#2


引用 1 楼 BeanJoy 的回复:
C/C++ code?12TCHAR pszCurDir[MAX_PATH];GetCurrentDirectory(MAX_PATH, pszCurDir);


请教一下,我发现这个函数获得的是.bat所在的文件夹,如何获取.bat全部路径,也就是文件名也连在后面?谢谢了。

#3


引用 2 楼 wangchaocug 的回复:
引用 1 楼 BeanJoy 的回复:C/C++ code?12TCHAR pszCurDir[MAX_PATH];GetCurrentDirectory(MAX_PATH, pszCurDir);

请教一下,我发现这个函数获得的是.bat所在的文件夹,如何获取.bat全部路径,也就是文件名也连在后面?谢谢了。


int main(int argc, char **argv)
{
if (argc >= 2)
{
printf("%s\n", argv[1]);
}

return 0;
}


批处理中这样调用:
youfile.exe "%~f0"

#4


通常API是不知道谁调用它的,咋办呢?追加一个标记调用者的参数吧,呵呵。

#5


引用 3 楼 BeanJoy 的回复:
引用 2 楼 wangchaocug 的回复:引用 1 楼 BeanJoy 的回复:C/C++ code?12TCHAR pszCurDir[MAX_PATH];GetCurrentDirectory(MAX_PATH, pszCurDir);

请教一下,我发现这个函数获得的是.bat所在的文件夹,如何获取.bat全部路径,也就是文件名也连在后面?谢谢了。
C/C……



可是我的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


引用 5 楼 wangchaocug 的回复:
引用 3 楼 BeanJoy 的回复:引用 2 楼 wangchaocug 的回复:引用 1 楼 BeanJoy 的回复:C/C++ code?12TCHAR pszCurDir[MAX_PATH];GetCurrentDirectory(MAX_PATH, pszCurDir);

请教一下,我发现这个函数获得的是.bat所在的文件夹,如何获取.bat全部路径,也就……

LPTSTR GetCommandLine(VOID)

这个API。

#7


除非你当值传入。你要么在bat里面

rem set Current_Path=%~dp0

%~dp0 就是路径。传入exe中。不然谁调用他,他自己又不管

#8


这样也可以:

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


引用 8 楼 BeanJoy 的回复:
这样也可以:
C/C++ code?123char pszParFile[MAX_PATH] = {0};GetEnvironmentVariable("parfile", pszParFile, MAX_PATH);printf("parfile=%s\n", pszParFile);
bat中这样调用:
C/C++ code?12set parfile=%~f0……


楼上正解,非常感谢。GetCommandLine返回的是exe的路径,不是bat的路径哦。