无忧启动论坛

标题: 判断批处理是终端关联运行还是CMD运行的方法 [打印本页]

作者: baby1277    时间: 2025-12-28 16:55
标题: 判断批处理是终端关联运行还是CMD运行的方法
本帖最后由 baby1277 于 2025-12-28 18:26 编辑

以前是写了个VHD还原的脚本,网友反馈用终端运行时脚本会闪退。
但用cmd运行就没有问题,问我能不能再脚本开头加个判断提示。
闪退的问题我无法复现,当时也没有琢磨明白,问AI也没有解决。
今天在测试系统时突然想到了一个思路,实验了真的成功了。
故和大家分享一下,或者大家有更好的方法也分享一下。
原理:在批处理开头定义一个窗口标签名称,再查询这个窗口标签,如找到就是CMD关联运行
没有找到就的终端关联运行

@echo off
title baby1277
tasklist /FI "IMAGENAME eq cmd.exe" /v |find /i "baby1277"
if %ERRORLEVEL% equ 0 (
echo 当前使用cmd关联运行
) else (
echo 当前使用终端关联运行
)
pause




作者: likeyouli    时间: 2025-12-28 17:26
你说的终端 是指 powershell ?  还有你这个脚本什么格式? 是.bat 吗  ?
作者: a66    时间: 2025-12-28 17:29
不错~~
作者: wwoldok    时间: 2025-12-28 17:48
这个不错
作者: it323    时间: 2025-12-28 18:06
感谢分享!
作者: 361318817    时间: 2025-12-28 19:27
000000000
作者: usb-boot    时间: 2025-12-28 19:43
0000
作者: wn168cn@163.com    时间: 2025-12-28 20:31
感谢分享
作者: handsome_xiang    时间: 2025-12-28 21:07
感谢分享!
作者: smile_z    时间: 2025-12-28 22:47
感谢分享
作者: win82    时间: 2025-12-28 23:13
感谢分享
作者: dksoft    时间: 2025-12-29 08:23
感谢分享
作者: ebaqiang    时间: 2025-12-29 10:59
这个好,感谢分享
作者: fegr    时间: 2025-12-29 16:16
感谢楼主分享
作者: nttwqz    时间: 2025-12-29 18:21
没有Win11,没有终端,无法测试。

记的有两个变量应该可以判断当前的命令解释器,可运行set命令对比不同解释器的变量
%cmdcmdline%
%comspec%

AI应该不至于无法回答如此简单的问题,应该是你的配方不对
我试着问了一下,让着重检查WT_SESSION变量,此变量是终端特有,但是如果终端有启动了cmd,那么这个变量会被集成。
作者: baby1277    时间: 2025-12-29 19:56
nttwqz 发表于 2025-12-29 18:21
没有Win11,没有终端,无法测试。

记的有两个变量应该可以判断当前的命令解释器,可运行set命令对比不同 ...

%cmdcmdline%和%comspec%这两个值不行,WT_SESSION变量到是可以。
当时问AI的时候没有提到WT_SESSION变量,所以我认为AI是一本正经的胡说八道
  1. if defined WT_SESSION (
  2. echo 当前使用终端关联运行
  3. ) else (
  4. echo 当前使用cmd关联运行
  5. )
  6. pause
复制代码






欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3