You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

寻求更简洁的获取时区显示名称(TZDN)的批处理脚本方案

寻求更简洁的获取时区显示名称(TZDN)的批处理脚本方案

嘿,我看了你当前用来获取时区显示名称的批处理代码,确实可以简化不少!先把你的原代码贴出来方便参考:

@echo off
for /f "tokens=1*" %%a in ('TZUTIL /g') do set TZID=%%a %%b
SetLocal EnableDelayedExpansion
for /f "tokens=1-4" %%a in ('TZUTIL /L') do (
    set $U=%%a& if "!$U:~0,5!"=="(UTC+" set $TZDN=%%b %%c %%d
    if "%%a %%b %%c %%d"=="!TZID!" set TZDN=!$TZDN!& goto :found
)
:found
echo !TZDN!&pause 
rem TZID=TimeZone ID, TZDN=TimeZone Display Name

你的需求很明确:通过当前时区ID(TZID)获取对应的时区显示名称(TZDN),想找更简洁的实现方式对吧?

给你两个更简洁的方案:

方案一:分步匹配提取

@echo off
:: 获取当前时区ID
for /f "tokens=1*" %%a in ('tzutil /g') do set "TZID=%%a %%b"
:: 匹配对应时区并提取显示名称
for /f "tokens=2-4 delims=()" %%a in ('tzutil /l ^| findstr /c:"%TZID%"') do set "TZDN=%%a"
:: 输出结果
echo %TZDN%
pause

方案二:单循环紧凑版本

@echo off
for /f "tokens=1*" %%a in ('tzutil /g') do (
    for /f "tokens=2-4 delims=()" %%x in ('tzutil /l ^| findstr /c:"%%a %%b"') do echo %%x
)
pause

方案说明

核心思路是利用tzutil /l的输出格式(每条记录为(UTC±XX:XX) 时区显示名称 时区ID),直接用findstr精准匹配当前时区ID,再通过delims=()分割字符串,一次性提取出括号内的时区显示名称,省去了原脚本里启用延迟变量、循环内多次判断的步骤,代码更短也更好读。

备注:内容来源于stack exchange,提问作者Mr.Key7

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.17 09:49:37