[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
  1. set /p "dt=Input:"
  2. PowerShell "$out=0; [DateTime]::TryParseExact('%dt%', 'M/d', [Globalization.CultureInfo]'zh-CN', [Globalization.DateTimeStyles]::None, [ref]$out)"
复制代码

TOP

简单、方便、准确,让神马的 for 和 if 见鬼去吧。
  1. $myInput  = Read-Host 'Input';
  2. $formats  = [String[]]('MM/dd', 'M/d');
  3. $provider = [Globalization.CultureInfo]'zh-CN';
  4. $style    = [Globalization.DateTimeStyles]::None;
  5. $result   = [DateTime]0;
  6. [DateTime]::TryParseExact($myInput, $formats, $provider, $style, [ref]$Result);
  7. [Console]::ReadLine()
复制代码
https://learn.microsoft.com/zh-cn/dotnet/api/system.datetime.tryparseexact?view=net-8.0
1

评分人数

TOP

本帖最后由 WHY 于 2024-8-21 21:25 编辑

回复 29# qixiaobin0715


    还要考虑一下,分隔符位于字符串开头的情况, for /f 会去掉字符串开头的分隔符。
比如输入:/03/12

TOP

个人观点:特殊字符是 CMD 的硬伤,用纯P来解此题,简直就是自找麻烦。
吐槽一下:“你认为有前途的,其他人或许认为就是辣鸡”,事实证明这句话是对的。

TOP

本帖最后由 WHY 于 2024-8-28 08:53 编辑

回复 68# 77七


    用 & 连接的语句,本身就是语句块;放到 for 循环里,语句块里面再套语句块,预处理时 cmd 认为是等价的,预处理花费的时间是一样的,执行时间相差无几。
就是说,
  1. for %%i in (1) do (
  2.     set "a=1"
  3.     set "b=2"
  4.     set "c=3"
  5. )
复制代码
  1. for %%i in (1) do set "a=1" & set "b=2" & set "c=3"
复制代码
以及
  1. for %%i in (1) do (
  2.     set "a=1" & set "b=2" & set "c=3"
  3. )
复制代码
等价

参考:http://www.bathome.net/thread-4482-1-1.html
PS: 想要提速,多在算法和思路上做文章,尽量少用call和goto;尽量少在for循环体内部使用外部命令。。。
用 & 、&&、||连接虽然可以带来效率提升,但提升空间非常有限,反倒是可读性、可维护性大打折扣,能不用就坚决不用吧。

TOP

返回列表