我正在撕我的头发。为什么不能有一个可用于批处理脚本的调试器?
我当前的批处理脚本的第一步(它必须使用这种“语言”,因为我没有可以使用的 c/wscript)只是删除小时部分(最初是格式 1:10,最近已更改为尝试使用与set
替换部分字符串的分隔符不同的小时+分钟分隔符),以便我也可以获得参数的分钟部分。到目前为止,我已经尝试过:
set ShutdownMinute2762=!ShutdownTime2762:*.=!
各种版本的标准扩展(如一些记忆中的例子):
一世。set ShutdownMinute2762=%ShutdownTime2762:*.=%
ii. set ShutdownMinute2762=%%ShutdownTime2762%:*.=%
三、set ShutdownMinute2762=%%%ShutdownTime2762%:*.=%%
逃离既*
与该.
在call set
的版本,用^
的
ShutdownTime2762
在脚本中设置变量,而不是通过参数[如下] - 使用 call set
setlocal
set ShutdownTime2762=%1
call set ShutdownMinute2762=%%ShutdownTime2762:*.=%%
call set ShutdownHour2762=%%ShutdownTime2762:%ShutdownMinute2762%=%%
echo.%ShutdownHour2762%
echo.%ShutdownMinute2762%
endlocal
提供的输入: 1.10
预期的输出:
1
10
随着每。单身的。跑步。后。每一个。单身的。改变。既%ShutdownHour2762%
&%ShutdownMinute2762%
显示为空。我错过了什么?
将
for /f "tokens=1* delims=." %%a in ("%1") do set shutdownhour=%%a&set shutdownminute=%%b
echo %shutdownhour%
echo %shutdownminute%
做你想做的事?
使用set
:
@ECHO OFF
SETLOCAL
SET "var1=%1"
SET "var2=%var1:*.=%"
CALL set "var1=%%var1:.%var2%=%%"
SET var
GOTO :EOF
这setlocal
可确保在过程结束时取消对环境所做的任何更改,以便更改不会因运行多个批次或重复批次而累积。
第一个set
从命令行分配第一个参数var1
,给定参数1.10
应该分配1.10
给var1
。
添加echo
此时使用的两个变量的 es 确实应该不会产生输出,var2
但应该显示1.10
for var1
。
第二个set
将var1
除第一个字符在内的所有字符分配.
给var2
,因此var2
应该获取该值10
。
第三个set
使用 acall
来调用解析两次。第一个替换的值var2
(因为它在 single 之间%
),第二个执行,set "var1=%var1:.10=%"
因为 的值var2
将被替换到命令中。这分配1
给var1
因为 the.10
被nothing替换。
在set var
上节省打字echo %var1% %var2%
,因为它列出了所有变量的值开始var
set "var=value"
我习惯使用的语法,因为它确保批处理行上的尾随空格不包含在分配的值中(这可能很难调试)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句