无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 3525|回复: 6

[分享] 无意中发现DOS批处理命令中2个怪现象

[复制链接]
发表于 2020-5-19 14:56:23 | 显示全部楼层 |阅读模式
昨天我在编一个小小批处理的时候, 发现2个怪现象, 不知道是不是我少见多怪,我自己觉得有点有趣, 所以和大家分享下。

1.  批处理命令以普通用户和以system账户运行结果不一样。 例 echo %date:~,7%
2.  md 2020/05 出错, md “2020/05” 却能成功, 当然一般的写法应该是 md 2020\05, 这个无论加不加引号我想都是一样并且会成功。

先说这些, 后续再补怎么发现的。
发表于 2020-5-19 15:17:42 | 显示全部楼层
2. 这很正常, / 通常是当参数分格号.

DIR [drive:][path][filename] [/A[[:]attributes]] [/B] [/C] [/D] [/L] [/N]
  [/O[[:]sortorder]]  [/P] [/Q] [/R] [/S] [/T[[:]timefield]] [/W] [/X] [/4]
回复

使用道具 举报

发表于 2020-5-19 20:32:06 | 显示全部楼层
dos一般使用\表示路径,例如:"c:\",使用/添加参数,例如:“format c:\ /s”。
回复

使用道具 举报

发表于 2020-5-19 21:23:39 | 显示全部楼层
本帖最后由 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
……

因为一般人都不会改变设置,所以绝大多数情况下下面的写法也成立。
  1. echo %date:~0,4%%date:~5,2%%date:~8,2%
  2. ::结果20200519
复制代码


如果从列表中选择其它设置,下面的情况适用:
  1. for /f "tokens=1,2,3 delims=-/. " %a in ("%date%") do echo %a %b %c
  2. ::可能的结果2020 05 19
复制代码


如果使用自定义格式手动指定,那么应该需要读取注册表,这个没有研究过,有兴趣可以自己研究。

比如自定义后的值可能是:周二 2020 19/05

点评

谢谢,这些我都知道, 我的电脑设置的是 yyyy-mm-dd, 但是当以system权限运行的时候,不管你设置的是什么格式, 都会以yyyy/mm/dd 呈现结果, 这就是我说的其中的一个怪现象。 中文版是这样子, 未试过英文版的  详情 回复 发表于 2020-5-20 10:18

评分

参与人数 1无忧币 +5 收起 理由
junyee + 5 赞一个!

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2020-5-20 10:18:29 | 显示全部楼层
nttwqz 发表于 2020-5-19 21:23
变量%DATE%的值取决于系统区域设置中短日期格式的设置。

默认设置是:

谢谢,这些我都知道, 我的电脑设置的是 yyyy-mm-dd, 但是当以system权限运行的时候,不管你设置的是什么格式, 都会以yyyy/mm/dd 呈现结果, 这就是我说的其中的一个怪现象。

中文版是这样子, 未试过英文版的。
回复

使用道具 举报

发表于 2020-6-24 10:58:34 | 显示全部楼层
Windows批处理的坑的确很多,这点还真不算什么。。。
回复

使用道具 举报

发表于 2020-6-24 22:46:18 | 显示全部楼层
感谢分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-3-29 17:03

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表