如何检测';批次';Windows下批处理文件中的模式

如何检测';批次';Windows下批处理文件中的模式,windows,batch-file,cmd,Windows,Batch File,Cmd,我正在通过Windows(任务)调度程序、第三方cron(nncronLite)和“START”命令运行批处理(.bat)文件。我正在尝试找出一种方法,与我从控制台(cmd.exe)窗口运行批处理文件相比,我可以通过上述方法之一检测到.bat文件已运行 我可以尝试检查环境变量。。但是哪一个(我在这里尝试HOMEDRIVE) 任何其他建议的机制(除了向批处理文件提供命令行参数=kludge,IMO) 这是用于Windows XP、Win7、Win8、Win10(我想还有更高版本) 谢谢。查找%cm

我正在通过Windows(任务)调度程序、第三方cron(nncronLite)和“START”命令运行批处理(.bat)文件。我正在尝试找出一种方法,与我从控制台(cmd.exe)窗口运行批处理文件相比,我可以通过上述方法之一检测到.bat文件已运行

我可以尝试检查环境变量。。但是哪一个(我在这里尝试HOMEDRIVE)

任何其他建议的机制(除了向批处理文件提供命令行参数=kludge,IMO)

这是用于Windows XP、Win7、Win8、Win10(我想还有更高版本)


谢谢。

查找
%cmdline%
变量的值…@Aacini:该变量显示在“批处理”模式下调用.bat文件时使用的实际命令行,在控制台(cmd.exe)窗口中运行时,仅显示批处理文件的名称(no.bat)。所以,也许我可以将COMSPEC与CMDLINE或CMDLINE进行比较。顺便说一句,你从哪里发现了CMDLine的存在?“SET”命令不会显示它,也不会包含在系统环境变量中…?键入
SET
以列出所有变量,包括
cmdline
。键入
set/?
查找
set
命令的帮助,该命令包括预定义的环境变量。@aschipfl:
set
命令不列出动态变量…@aschipfl:我的意思是
set/?
描述了所有动态变量,和
set
命令列出环境中定义的变量。由于其性质,动态变量未在环境中定义,因此
set
命令不会列出任何动态变量,如cmdline、ERRORLEVEL、TIME、RANDOM、,等等。查找
%cmdline%
变量的值…@Aacini:该变量显示在“批处理”模式下调用.bat文件时使用的实际命令行,在控制台(cmd.exe)窗口中运行时,仅显示批处理文件的名称(no.bat)。所以,也许我可以将COMSPEC与CMDLINE或CMDLINE进行比较。顺便说一句,你从哪里发现了CMDLine的存在?“SET”命令不会显示它,也不会包含在系统环境变量中…?键入
SET
以列出所有变量,包括
cmdline
。键入
set/?
查找
set
命令的帮助,该命令包括预定义的环境变量。@aschipfl:
set
命令不列出动态变量…@aschipfl:我的意思是
set/?
描述了所有动态变量,和
set
命令列出环境中定义的变量。由于其性质,动态变量未在环境中定义,因此
set
命令不会列出任何动态变量,如cmdline、ERRORLEVEL、TIME、RANDOM等。
setlocal
set BATCH_MODE=1
if defined HOMEDRIVE set BATCH_MODE=

rem [...]

if defined BATCH_MODE echo IN BATCH MODE