中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [出题] 让批处理自行判断是否被双击运行
« [1] [2] »
作者:
标题: [出题] 让批处理自行判断是否被双击运行 上一主题 | 下一主题
pusofalse
银牌会员




积分 1604
发帖 646
注册 2008-4-13
状态 离线
『楼 主』:  [出题] 让批处理自行判断是否被双击运行

出题目的:了解批处理运行机制。

加分规则:
        思路新颖8分
        无临时文件3分
        代码简洁3分
        完美代码15分

题目内容:
让批处理自行判断是否被双击运行还是在CMD中手动输入运行。
如同tasklist.exe、net.exe、ping.exe,当我们双击这些文件时,会一闪而过,看不到这些命令的帮助信息。只有在CMD中手动输入之后才能看到。现在的题目是编写一个批处理文件,当我们双击运行时(不带任何参数),显示“双击运行”并暂停,如果是在CMD中手动输入运行(同样不带任何参数),显示“CMD中手动输入运行”之后不暂停,直接返回到命令提示符。

   此帖被 +19 点积分      点击查看详情   
评分人:【 HAT 分数: +4  时间:2008-11-12 20:40
评分人:【 523066680 分数: +15  时间:2009-10-12 17:43




心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^
2008-11-12 18:35
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 2 楼』:  


@echo off
wmic process where "name='cmd.exe'" get commandline | findstr /ric:"^cmd /c.*%~n0" >nul&& echo/双击运行 || echo/命令行运行
pause
这样可以吗?

   此帖被 +15 点积分         点击查看详情   
评分人:【 pusofalse 分数: +15  时间:2008-11-12 20:13


2008-11-12 19:49
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
pusofalse
银牌会员




积分 1604
发帖 646
注册 2008-4-13
状态 离线
『第 3 楼』:  

赞佩!



心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^
2008-11-12 20:13
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
BC
中级用户




积分 338
发帖 175
注册 2007-10-21
状态 离线
『第 4 楼』:  

lxmxn够牛的



C:\
C:\Del BC
2008-11-12 20:29
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 5 楼』:  多cmd会……

Microsoft Windows XP [版本 5.1.2600]
(C) 版权所有 1985-2001 Microsoft Corp.

C:\Documents and Settings\Administrator>"C:\Documents and Settings\Administrator
\桌面\123.bat"
双击运行
CommandLine
"C:\WINDOWS\system32\cmd.exe"
cmd /c ""C:\Documents and Settings\Administrator\桌面\123.bat" "
cmd /c ""C:\Documents and Settings\Administrator\桌面\123.bat" "
"C:\WINDOWS\system32\cmd.exe"

请按任意键继续. . .



S smile 微笑,L love 爱,O optimism 乐观,R relax 放松,E enthusiasm 热情...Slore
2008-11-12 22:39
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 6 楼』:  re slore:

呵呵,特殊情况自然就没考虑那么多啦。

2008-11-13 11:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
tireless
银牌会员





积分 2025
发帖 1122
注册 2007-9-5
状态 离线
『第 7 楼』:  


@echo off
if "%~1"=="" (
  if "%~0"=="%~nx0" (
    echo CMD中手动输入运行
  ) else (
    echo 双击运行 & pause
  )
)
利用:双击会显示批处理自身的完整路径,而在命令提示符窗口中只显示文件名。
(当然,如果在命令提示符窗口中输入完整路径就会误判了)

   此帖被 +15 点积分         点击查看详情   
评分人:【 523066680 分数: +15  时间:2009-10-10 19:45


2008-12-6 01:01
查看资料  发短消息 网志   编辑帖子  回复  引用回复
523066680
银牌会员

SuperCleaner


积分 2362
发帖 1133
注册 2008-2-2
状态 离线
『第 8 楼』:  

会变成经典的!虽然我不是刚来,不过还是灌水顶一下。



综合型编程论坛

我的作品索引
  
2009-10-10 19:46
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (523066680)  编辑帖子  回复  引用回复
netbenton
银牌会员

批处理编程迷


积分 1916
发帖 752
注册 2008-12-28
来自 广西
状态 离线
『第 9 楼』:  

除非命令行输入时带上双引号,并且还注意有时大写,有时小写,
否则应该不会误判了吧!
@echo off&setlocal enabledelayedexpansion
set a0=%0
set a1="%cd%\%~nx0"

if !a0! equ !a1! (echo 双击运行) else (echo 命令行运行)
echo !a0!
echo !a1!
pause


   此帖被 +9 点积分       点击查看详情   
评分人:【 523066680 分数: +9  时间:2009-10-12 17:50




精简
[你的+我的+他的]=>[大家的]    个人网志   
2009-10-10 21:56
查看资料  发送邮件  发短消息 网志  OICQ (37659560)  编辑帖子  回复  引用回复
plp626
银牌会员

钻石会员


积分 2278
发帖 1020
注册 2007-11-19
状态 离线
『第 10 楼』:  

re:netbenton

兄的代码还稍欠考虑,系统变量cd有一个特殊情况就是根目录下最后一个字符不带"\",看来这点还是被不少人忽略啊

其实用cmdcmdline变量判断比较正统些。



山外有山,人外有人;低调做人,努力做事。

进入网盘(各种工具)~~ 空间~~cmd学习
2009-10-11 18:19
查看资料  发短消息 网志   编辑帖子  回复  引用回复
netbenton
银牌会员

批处理编程迷


积分 1916
发帖 752
注册 2008-12-28
来自 广西
状态 离线
『第 11 楼』:  

再加一点呢?
@echo off&setlocal enabledelayedexpansion

set a0=%0
set a1="%cd%\%~nx0"
set a1=!a1:\\=\!

if !a0! equ !a1! (echo 双击运行) else (echo 命令行运行)
echo !a0!
echo !a1!
pause




精简
[你的+我的+他的]=>[大家的]    个人网志   
2009-10-11 19:42
查看资料  发送邮件  发短消息 网志  OICQ (37659560)  编辑帖子  回复  引用回复
plp626
银牌会员

钻石会员


积分 2278
发帖 1020
注册 2007-11-19
状态 离线
『第 12 楼』:  

这个代码的健壮性大家测试后我再下结论
@if "%cmdcmdline:~0,9%"=="cmd /c """ (echo 双击) else (echo 非双击)
@pause


   此帖被 +9 点积分       点击查看详情   
评分人:【 523066680 分数: +9  时间:2009-10-12 17:43




山外有山,人外有人;低调做人,努力做事。

进入网盘(各种工具)~~ 空间~~cmd学习
2009-10-12 17:26
查看资料  发短消息 网志   编辑帖子  回复  引用回复
523066680
银牌会员

SuperCleaner


积分 2362
发帖 1133
注册 2008-2-2
状态 离线
『第 13 楼』:  

cmd下调用……

  Quote:
C:\Documents and Settings\liubo\桌面>call a.bat
此时不应有 /c。

C:\Documents and Settings\liubo\桌面>@if ""C:\WINDO"=="cmd /c " (echo 双击) els
(echo 非双击)

C:\Documents and Settings\liubo\桌面>

(温馨提示,liubo不是我的名字,我不叫刘波…… 别恶搞我哈)

[ Last edited by 523066680 on 2009-10-12 at 17:49 ]



综合型编程论坛

我的作品索引
  
2009-10-12 17:42
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (523066680)  编辑帖子  回复  引用回复
plp626
银牌会员

钻石会员


积分 2278
发帖 1020
注册 2007-11-19
状态 离线
『第 14 楼』:  

健壮性待大家测试
@echo off
echo %cmdcmdline%|findstr/bc:"cmd /c """>nul&&echo 双击||echo 非双击
pause




山外有山,人外有人;低调做人,努力做事。

进入网盘(各种工具)~~ 空间~~cmd学习
2009-10-12 18:17
查看资料  发短消息 网志   编辑帖子  回复  引用回复
plp626
银牌会员

钻石会员


积分 2278
发帖 1020
注册 2007-11-19
状态 离线
『第 15 楼』:  



  Quote:
Originally posted by pusofalse at 2008-11-12 06:35 PM:
出题目的:了解批处理运行机制。

加分规则:
        思路新颖8分
        无临时文件3分
        代码简洁3分
        完美代码15分

题目内容:
让批处理自行判断是否被 ...

不知道是不是这个意思

http://bbs.bathome.cn/viewthread.php?tid=4725



山外有山,人外有人;低调做人,努力做事。

进入网盘(各种工具)~~ 空间~~cmd学习
2009-10-12 18:35
查看资料  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: