cmd提取时间格式(小时)问题以及Windows系统语言判断


你在这里看到了我的现在的时间是01:15,没错正在做个开发,本来好好的,结果一运行,直接报错:

这里就是时间中的获取小时出了问题,之前23点那会已经调试通过了,过那时是没有问题的,那么这时发生了什么?为何中间会多了一个空格?
在系统cmd中提取时间:

可以看到小时前面还是有空格,那么是编码问题chcp 65001 改到 chcp 936 一样还是。
最后,想到可能这里的时间是个位数?试试
for /l %i in (,,) do ( if %time:~,%==%i echo %i )

果然这样就对了
还有就是,我的bat文件要可以在中文,和英文系统上提取时间,在chcp 65001 下提取的时间格式是不同的,那么如何能正确提取呢?
思路一:
cmd判断系统的语言,
systeminfo输出的中虽然有zh-cn 但是中英文都是一样,排除
采用dxdiag输出文件后有具体的语言,可是每当执行到这里时,这两个命令都会等好一会时间,而且执行dxdiag命令后,检测生成的文件还会提示文件不存,但其实是有输出的。排除
思路二:
既然系统提取的时间不同那么直接根据不同来判断,不同主要是在提取的时间有没有/,一般正常提取后是:20181022 错误的是 2018/10/22
set dateTime=%date:~10,4%%date:~4,2%%date:~7,2%_%hour%%time:~3,2%%time:~6,2%%time:~9,2%
echo %dateTime% |find "/" && set dateTime=%date:~3,4%%date:~8,2%%date:~11,2%_%hour%%time:~3,2%%time:~6,2%%time:~9,2%
这样我们就可以提取正确的时格式,又可以判断系统的语言了。
如果想要获取系统语言:
dism /online /get-intl

cmd时间格式参考:
参考:原文:https://blog.csdn.net/jinhoward/article/details/20213213
比如在windowscmd命令行窗口执行date命令后这个环境变量的值为

那么如下的各个操作的意义如下:
%date:~0,4%  表示从左向右指针向右偏0位,然后从指针偏移到的位置开始提取4位字符,结果是2014(年的值)
%date:~5,2%  表示指针从左向右偏移5位,然后从偏移处开始提取2位字符,结果是03(月的值)
%date:~8,2%  表示指针从左向右偏移8位,然后从偏移处开始提取2位字符,结果是01(日的值)
%date:~5%    表示指针从左向右偏移5位,然后提取所有的值
%date:~-5%   表示指针反方向偏移,从最右端开始,偏移5位,然后从指针处提取左边的所有数值。
注意:“2014-03-01 星期六”是个字符串,在计算机里指针是从0开始计数的,所以这串字符的指针意义上的第5位是0,月份的0,取两位刚好是03.
同理,比如当前系统的time变量的值如下:


那么如下的各个操作的意义如下:
%time:~0,2%  表示从左向右指针向右偏0位,然后从指针偏移到的位置开始提取2位字符,结果是小时字段数值
%time:~3,2%  表示指针从左向右偏移3位,然后从偏移处开始提取2位字符,结果是分钟字段数值
%time:~6,2%  表示指针从左向右偏移6位,然后从偏移处开始提取2位字符,结果是秒字段数值
实战操作:                                                                                                                       
md d:\%date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%%time:~6,2%
cmd提取时间格式(小时)问题以及Windows系统语言判断的更多相关文章
- Windows 系统版本判断
		Windows 系统版本判断 博客分类: C/C++ 很多情况下,需要软件判断操作系统,其实网上写的都很少,我希望这篇文章能给大家帮助 首先我们要在.h中定义下面的东西 #define PRODU ... 
- 更改windows系统语言,改为英文
- JS时间格式 GMT格式转换
		JavaScript时间格式转换总结 1.当前系统区域设置格式(toLocaleDateString和toLocaleTimeString) 例子:(new Date()).toLocaleDateS ... 
- Windows系统自带工具的 cmd 命令
		目标 与计算机高手无关,只是为了减少鼠标点击的次数,提高效率. 适用范围 Windows XP,Windows 7,Window 8 (在Windows 7 下验证通过.) 使用方法 在 “运行“ 对 ... 
- C# 判断一个string型的时间格式是否正确
		在项目开发过程中,由于各种坑爹的需求,我们可能需要用户自己手动输入时间,不过这种功能一般都出现在自己家的后台里面,咳咳,言归正传.既然如此,那么这个时候我们就需要对用户手动输入的时间格式进行验证,方法 ... 
- 让windows系统的DOS窗口也可以显示utf8字符集
		C:\Users\Administrator>chcp活动代码页: 936 windows cmd命令显示UTF8设置 在中文Windows系统中,如果一个文本文件是UTF-8编码的,那么在CM ... 
- Gentoo解决Windows系统txt文本中文乱码问题
		Linux与Windows系统语言编码区别 在Linux操作系统下,我们有时打开在windows下的txt文件,发现在windows下能正常显示的txt文件出现了中文乱码. 出现这种情况的原因为两种操 ... 
- WINDOWS 2003系统时间24小时制与12小时显示格式不一致问题与解决
		WINDOWS 2003 SERVER系统时间24小时制与12小时格式不一致问题,而导致论坛或BLOG不能正常显示更新日期的问题及解决方法问题的方法. 在WIN2003上出现这种情况的原因是在程序中使 ... 
- ios 在中国地区,24小时时间格式 系统设定下 获得12小时制时间的方法
		如题,在中国地区,24小时时间格式 系统设定下,如果单单使用 NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 之后,无论用hh ... 
随机推荐
- selenium+python自动化测试
			F12: 右键 选择复制 path 在selenium+python自动化测试(一)–环境搭建中,运行了一个测试脚本,脚本内容如下: from selenium import webdriver ... 
- c语言之单链表的创建及排序
			今天对之前学习过的链表知识进行简单的总结顺便写点代码:创建一个链表有头插法跟尾插法两种,在下面代码中我们为结点分配的内存实在堆上分配的,因此需要我们手动释放,释放用free()函数 下面代码贴出具体代 ... 
- C++之Binary Heap/Max Heap
			#include <iostream> #include <time.h> #include <random> using namespace std; //Bin ... 
- WPF 毛笔字
			1.先来看看InkCanvas的一般用法: <InkCanvas> <InkCanvas.DefaultDrawingAttributes> < ... 
- Linux下启动时间优化专题
			1. 过往优化总结 陆陆续续在Linux进行启动时间优化,之前有两份文档,分别从内核和用户空间两个方向进行了优化. <Android/Linux boot time分析优化>和<Bu ... 
- sql server 高可用性技术总结
			一. 复制Replication(快照.事务.合并) 应用场景: 负载均衡.提供副本读,写操作. 分区将历史数据复制到其它表中. 授权,将数据提供它人使用. 数据合并. 故障转移. 优点: 实现简单 ... 
- MySQL复制进阶
			Ⅰ.背景 搭建MySQL复制环境非常简单 你的系统是否也是像我之前那么搭建的呢? 那么,你的复制系统是否出现过以下的情况呢? 复制报错,例如:1062,1032 主从数据不一致 Ⅱ.真正高可靠复制环境 ... 
- PuTTY/终端使用复制、粘贴
			Putty鼠标按钮选项 通过鼠标按钮选项可以控制鼠标来进行复制.粘贴操作,选项包括: 1.Windows选项: 2.混合模式(系统默认选项): 3.Xterm模式. 以上是三种模式选项的简单介绍,下面 ... 
- 2101: Bake Off
			Description Davy decided to start a weekend market stall where he sells his famous cakes. For the fi ... 
- SVN客户端和服务器端下载地址
			https://sourceforge.net/projects/tortoisesvn/files/1.9.7/Application/TortoiseSVN-1.9.7.27907-x64-svn ... 
