无忧启动论坛
标题:
无意中发现DOS批处理命令中2个怪现象
[打印本页]
作者:
quya
时间:
2020-5-19 14:56
标题:
无意中发现DOS批处理命令中2个怪现象
昨天我在编一个小小批处理的时候, 发现2个怪现象, 不知道是不是我少见多怪,我自己觉得有点有趣, 所以和大家分享下。
1. 批处理命令以普通用户和以system账户运行结果不一样。 例 echo %date:~,7%
2. md 2020/05 出错, md “2020/05” 却能成功, 当然一般的写法应该是 md 2020\05, 这个无论加不加引号我想都是一样并且会成功。
先说这些, 后续再补怎么发现的。
作者:
plusv
时间:
2020-5-19 15:17
2. 这很正常, / 通常是当
参数分格号
.
DIR [drive:][path][filename] [/A[[:]attributes]] [/B] [/C] [/D] [/L] [/N]
[/O[[:]sortorder]] [/P] [/Q] [/R] [/S] [/T[[:]timefield]] [/W] [/X] [/4]
作者:
wxgwxg
时间:
2020-5-19 20:32
dos一般使用\表示路径,例如:"c:\",使用/添加参数,例如:“format c:\ /s”。
作者:
nttwqz
时间:
2020-5-19 21:23
本帖最后由 nttwqz 于 2020-5-19 21:46 编辑
变量%DATE%的值取决于系统区域设置中短日期格式的设置。
默认设置是:
2020/05/19 周二
改变设置后可能是:
2020-05-19 周二
2020.05.19 周二
20/05/19 周二
20.05.19 周二
2020-05-19
2020/05/19
2020.05.19
……
因为一般人都不会改变设置,所以绝大多数情况下下面的写法也成立。
echo %date:~0,4%%date:~5,2%%date:~8,2%
::结果20200519
复制代码
如果从列表中选择其它设置,下面的情况适用:
for /f "tokens=1,2,3 delims=-/. " %a in ("%date%") do echo %a %b %c
::可能的结果2020 05 19
复制代码
如果使用自定义格式手动指定,那么应该需要读取注册表,这个没有研究过,有兴趣可以自己研究。
比如自定义后的值可能是:周二 2020 19/05
作者:
quya
时间:
2020-5-20 10:18
nttwqz 发表于 2020-5-19 21:23
变量%DATE%的值取决于系统区域设置中短日期格式的设置。
默认设置是:
谢谢,这些我都知道, 我的电脑设置的是 yyyy-mm-dd, 但是当以system权限运行的时候,不管你设置的是什么格式, 都会以yyyy/mm/dd 呈现结果, 这就是我说的其中的一个怪现象。
中文版是这样子, 未试过英文版的。
作者:
2010techon
时间:
2020-6-24 10:58
Windows批处理的坑的确很多,这点还真不算什么。。。
作者:
hexj68
时间:
2020-6-24 22:46
感谢分享
欢迎光临 无忧启动论坛 (http://bbs.c3.wuyou.net/)
Powered by Discuz! X3.3