我需要让我的 2.bat
脚本行为取决于调用脚本的名称。
场景:
2.bat
是从许多其他外部脚本调用的,我无权更改这些脚本。只有 2.bat
在我手下。
1.bat
:
...
call 2.bat
2.bat
:
...here place something extracting "1.bat"...
最佳答案
由于您无法更改调用 bat,因此如果它是通过 cmd 控制台触发的(可能是内存转储可能有帮助?),则几乎不可能获取其名称,因为 ProcessId 将仅保存 的信息cmd.exe
。命令提示符历史记录可以为您提供一些信息,但它不可靠(并且需要转储到临时文件)
如果调用 bat 被双击,你可以使用这个:
setlocal enableDelayedExpansion
for /f "tokens=2* delims= " %%a in ("%cmdcmdline%") do (
if /i "%%~a" equ "/c" (
for %%# in (%%~b) do (
echo calling bat : %%~#
)
) else (
doskey /history >"%tmp%\cmd.history"
for /f "usebackq tokens=* delims=" %%# in ("%tmp%\cmd.history") do (
set "last_command=%%#"
)
echo probably this is the calling bat: !last_command!
del /q /f "%tmp%\cmd.history"
)
)
pause
关于batch-file - 如何获取调用bat脚本的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43089515/