Win10论坛

Win10正式版系统下载主题平板

重定义Modern UI,打造完美Windows全新体验

Windows10下载|安装|新手宝典|必备软件

搜索
查看: 988|回复: 14

[讨论] 命令提示符CMD内部命令title的一个有趣现象 [复制链接]

Rank: 7Rank: 7Rank: 7

UID
649063
帖子
1302
PB币
1440
贡献
0
技术
23
活跃
2062
发表于 2020-10-19 15:56:10 |显示全部楼层
title命令是命令提示符CMD的一个内部命令,用于改变命令提示符窗口的窗口标题。
最近在编写批处理时注意到这么一个现象:
title 标题1
…………
这时调用一个也能修改命令提示符窗口标题的外部命令,比如cmdow:
cmdow @ /ren 标题2
…………
title 标题1
此时命令提示符窗口的窗口标题仍是“标题2”,而不是“标题1”。
如果此时执行:
title 标题3
命令提示符窗口的窗口标题改变为“标题3”了。

猜测地分析了一下导致上述现象的title命令内部执行机制:
title命令作为内部命令,改变窗口标题前会先比较要改变的窗口标题和前一个title命令改变的窗口标题是否一致,
如果一致,当前title命令并不会实质性地执行而仅仅是跳过以提高批处理执行效率,
不会感知到两次title命令之间第三方程序对命令提示符窗口的窗口标题所做的改变。

这个问题困扰了一晚上,mark一下,以作备忘。

Rank: 7Rank: 7Rank: 7

UID
472061
帖子
1401
PB币
1698
贡献
0
技术
1
活跃
956
发表于 2020-10-19 17:10:32 |显示全部楼层
你还是不要用中文了,写个东西都写不清楚,害我看了几分钟后还没看明白。

我查MSDN算了。。。

得出 title命令就一个string 参数 //这个string 就是指定命令行窗口的标题
这么一点内容给你扩了一大篇!!!
ttt.JPG

山中何事?松花酿酒,春水煎茶。

Rank: 11Rank: 11Rank: 11

UID
1638437
帖子
5767
PB币
27
贡献
0
技术
80
活跃
2441
发表于 2020-10-19 17:45:00 |显示全部楼层
楼上两位专业人士的中文、英文都太深奥,它们识得我,我不识得它。

Rank: 7Rank: 7Rank: 7

UID
649063
帖子
1302
PB币
1440
贡献
0
技术
23
活跃
2062
发表于 2020-10-19 19:28:25 |显示全部楼层
aslim 发表于 2020-10-19 17:10
你还是不要用中文了,写个东西都写不清楚,害我看了几分钟后还没看明白。

我查MSDN算了。。。

语文没学好跑到这来秀英文?

Rank: 7Rank: 7Rank: 7

UID
472061
帖子
1401
PB币
1698
贡献
0
技术
1
活跃
956
发表于 2020-10-19 20:22:13 来自手机 |显示全部楼层
zsqzsqzsqzsq 发表于 2020-10-19 19:28
语文没学好跑到这来秀英文?

我是语文和英文都没写好
你要是说改标题 不要一大篇 大家一秒估计就看懂了 像我上传的那个图片

Rank: 7Rank: 7Rank: 7

UID
4757741
帖子
734
PB币
186
贡献
0
技术
0
活跃
1063

我是大学生! 十一周年

发表于 2020-10-19 22:05:21 |显示全部楼层
aslim 发表于 2020-10-19 17:10
你还是不要用中文了,写个东西都写不清楚,害我看了几分钟后还没看明白。

我查MSDN算了。。。

他说的不止是命名当前窗口,是用title,cmdow都能重命名,但是title改成同一个名字并没有马上切换。。
我这么说还不如楼主说的清楚,不如你再慢慢的读一遍?

Rank: 2Rank: 2

UID
4845842
帖子
484
PB币
743
贡献
0
技术
0
活跃
777
发表于 2020-10-19 22:50:42 |显示全部楼层
aslim 发表于 2020-10-19 17:10
你还是不要用中文了,写个东西都写不清楚,害我看了几分钟后还没看明白。

我查MSDN算了。。。

你确实没看明白楼主说的什么,然后回了个牛头不对马嘴的贴

Rank: 5Rank: 5Rank: 5

UID
340993
帖子
943
PB币
698
贡献
0
技术
0
活跃
913
发表于 2020-10-20 07:13:47 来自手机 |显示全部楼层
楼主的意思是批处理里没必要把一句命令写两次 ,对啊,一模一样的语句为什么要写两遍呢?
1

查看全部评分

Rank: 5Rank: 5Rank: 5

UID
1027774
帖子
641
PB币
354
贡献
0
技术
5
活跃
1280

Win10先驱者

发表于 2020-10-20 09:27:31 |显示全部楼层
学习到了,算是title的bug吧,mark一下

Rank: 7Rank: 7Rank: 7

UID
649063
帖子
1302
PB币
1440
贡献
0
技术
23
活跃
2062
发表于 2020-10-20 09:56:11 |显示全部楼层
窄口牛 发表于 2020-10-20 07:13
楼主的意思是批处理里没必要把一句命令写两次 ,对啊,一模一样的语句为什么要写两遍呢?

我想表达的意思是,在批处理中,具有相同功能的命令,尽量统一使用其中一个,别混着用;能内部命令实现的功能尽量使用内部命令;要使用外部命令实现的功能尽量使用系统自带的命令;最后才是第三方提供的命令。

五星老土

Rank: 5Rank: 5Rank: 5

UID
590870
帖子
654
PB币
4624
贡献
0
技术
38
活跃
1263
发表于 2020-10-20 10:51:54 |显示全部楼层
2楼你根本没看懂楼主的帖子就跑来贴个图,搞什么啊。居然指责楼主“这么一点内容给你扩了一大篇!!!”。

哎呀, 二楼居然懂什么MSDN啊, 好高深的样子, 不明觉厉。

Rank: 5Rank: 5Rank: 5

UID
340993
帖子
943
PB币
698
贡献
0
技术
0
活跃
913
发表于 2020-10-20 13:43:32 来自手机 |显示全部楼层
肯定的哇,用第二种去实现同一个目的肯定是在另一个批处理,或者rem语句,表示也可以用第二种写法,对吧。

Rank: 7Rank: 7Rank: 7

UID
2226747
帖子
1574
PB币
1481
贡献
0
技术
91
活跃
1415
发表于 2020-10-20 13:47:18 来自手机 |显示全部楼层
zsqzsqzsqzsq 发表于 2020-10-20 09:56
我想表达的意思是,在批处理中,具有相同功能的命令,尽量统一使用其中一个,别混着用;能内部命令实现的 ...

实际上,并不是所有的批处理被设计在PE中运行,不用考虑系统从是否精简了这些外置命令,就比如外置命令find findstr,通过for也能实现,但是我在1000行以上的批处理中尝试使用for等内置命令替代了他们后,执行效率并没有提升,时间统计单位毫秒,虽然理论上讲外置命令远没有内置命令执行效率高,但是也要达到一个量级。

个人认为,系统中已经内置的外置命令用用无妨,放着不用非写一堆代码来实现是凸显自己水平高吗?执行结果又有何不同。

Rank: 7Rank: 7Rank: 7

UID
713927
帖子
1438
PB币
5631
贡献
0
技术
19
活跃
1055

7周年庆典勋章 8周年庆典勋章

发表于 2020-10-20 14:16:46 |显示全部楼层
没明白..........
头像被屏蔽

UID
4869062
帖子
147
PB币
111
贡献
0
技术
1
活跃
68
发表于 2020-10-22 09:52:59 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回顶部
Copyright (C) 2005-2021 pcbeta.com, All rights reserved
Powered by Discuz!  苏ICP备17027154号
请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。
远景在线 | 远景论坛 | 苹果论坛 | Win10论坛 | Win8论坛 | Win7论坛 | WP论坛 | Office论坛 | 电脑硬件 | 安卓软件