Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file NT批处理-字符串显示问题_Batch File - Fatal编程技术网

Batch file NT批处理-字符串显示问题

Batch file NT批处理-字符串显示问题,batch-file,Batch File,我正在编写NT批处理脚本(我无法在需要运行此脚本的计算机上安装powershell或任何其他更高级的脚本语言) 我需要按计划重新启动服务器(同样,需要在其上运行的机器在构建中没有任务调度器) 因此,我正在进行日期操作,以确定在作为启动脚本运行shutdown.exe时传递给shutdown.exe的超时时间 考虑以下几点: SET RAt = "04:15" SET RHour = %RAt:~0,2% SET RMin = %RAt:~3,2% 及 RAt的值不会显示,如果我将echo语句改

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

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

因此,我正在进行日期操作,以确定在作为启动脚本运行shutdown.exe时传递给shutdown.exe的超时时间

考虑以下几点:

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


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

Graham,您的代码当前未使用建议的语法,因此这是您的问题

如果
设置RAt=“04:15”
则将名为%RAt%的变量的值设置为“04:15”

设置变量时,建议不要将双引号作为值的一部分,而是在实际使用时使用,即
“%VariableName%”
。为了保护VariableValue中的某些字符,或防止在值后面附加隐藏的空白,建议使用双引号将变量对括起来

因此,
Set
命令的建议语法为:

设置“VariableName=VariableValue”
我建议您根据上述建议考虑以下类型的修改:

设置“RAt=04:15”
设置“RHour=%RAt:~,2%或~0,2%%或~5,2%
设置“RMin=%RAt:~-2%或~3,2%
当然,如果变量的内容确实已被双引号引用:

SET“RHour=%RAt:~1,2%或~6,2%
设置“RMin=%RAt:~-3,2%或~4,2%

百分比字符之间的集合行末尾的字符串作为注释是可选的,它们可以删除

不要在
集合
命令中使用空格。这是用于哪个Windows Server版本的?我应该注意,您正在为变量指定引号。最好的做法是不要给变量指定引号,而是使用引号包围set命令,以保护特殊字符和尾随空格<代码>设置“RAt=04:15”
@Squashman令人沮丧的简单!你可以看出我在powershell更快乐!谢谢-如果你回答这个问题,我会把它标记为such@Compo在Win7企业机器上开发,但它将在WinXP嵌入式2002 SP2上运行-是的,真的!
Echo Server will reboot in %Days2Reboot% Days (%Secs2Reboot% seconds), on %GDate% at approximately %RHour:~0,2%:%RMin%