首页 > 解决方案 > NT BATCH - 字符串显示问题

问题描述

我正在编写一个 NT 批处理脚本(我无法在需要运行的机器上安装 powershell 或任何其他更高级的脚本语言)。

我需要按计划重新启动服务器(同样,需要运行的机器在构建中没有任务计划程序)。

所以我正在做日期操作以确定当它作为启动脚本运行时传递给shutdown.exe的超时秒数。

考虑以下:

SET RAt = "04:15"
SET RHour = %RAt:~0,2%
SET RMin = %RAt:~3,2%

Echo Server will reboot in %Days2Reboot% Days (%Secs2Reboot% seconds), on %GDate% at approximately %RHour:~0,2%:%RMin%

的值RAt不显示,如果我将echo语句更改为显示%RHour%:%RMin%RHour 的值是 4,而不是 04 - 如何修复 HH:MM 格式字符串值的显示,或强制显示数字一定的位数?

标签: batch-file

解决方案


格雷厄姆,你的代码目前没有使用推荐的语法,这就是你的问题。

如果您SET RAt = "04:15"将一个名为的变量设置%RAt % "04:15".

当您Set使用变量时,建议不要将双引号作为值的一部分,而是在您实际使用它时这样做,即"%VariableName%". 为保护 VariableValue 中的某些字符,或防止将隐藏的空格附加到值中,建议使用双引号将变量对括起来

因此,该Set命令的推荐语法为:

Set "VariableName=VariableValue"

我建议您根据上述建议考虑以下类型的修改:

SET "RAt=04:15"
SET "RHour=%RAt:~,2%" % or ~0,2 % % or ~-5,2 %
SET "RMin=%RAt:~-2%" % or ~3,2 %

当然,如果变量的内容确实已经被双引号引起来:

SET "RHour=%RAt:~1,2%" % or ~-6,2 %
SET "RMin=%RAt:~-3,2%" % or ~4,2 %

百分比字符之间的设置行末尾的字符串是作为注释的替代品,它们可以被删除


推荐阅读