【问题标题】:"was unexpected at this time." when running .cmd file through command line in Windows“这个时候出乎意料。”在 Windows 中通过命令行运行 .cmd 文件时
【发布时间】:2016-12-27 17:12:06
【问题描述】:

我收到错误消息“此时 1JDa:~1JDa:~1 出乎意料。”尝试通过命令行运行以下 .cmd 时:

Call :GetDateTime Year Month Day
Call :SubtractDate %Year% %Month% %Day% -1 Ret

SET mes=%Ret:~0,2%
SET dia=%Ret:~3,2%
SET ano=%Ret:~6,4%



:SubtractDate Year Month Day <+/-Days> Ret
::Adapted from DosTips Functions::
setlocal & set a=%4
set "yy=%~1"&set "mm=%~2"&set "dd=%~3"
set /a "yy=10000%yy% %%10000,mm=100%mm% %% 100,dd=100%dd% %% 100"
if %yy% LSS 100 set /a yy+=2000 &rem Adds 2000 to two digit years
set /a JD=dd-32075+1461*(yy+4800+(mm-14)/12)/4+367*(mm-2-(mm-14)/12*12)/12-3*((yy+4900+(mm-14)/12)/100)/4
if %a:~0,1% equ + (set /a JD=%JD%+%a:~1%) else set /a JD=%JD%-%a:~1%
set /a L= %JD%+68569,     N= 4*L/146097, L= L-(146097*N+3)/4, I= 4000*(L+1)/1461001
set /a L= L-1461*I/4+31, J= 80*L/2447,  K= L-2447*J/80,      L= J/11
set /a J= J+2-12*L,      I= 100*(N-49)+I+L
set /a YYYY= I, MM=100+J, DD=100+K
set MM=%MM:~-2% & set DD=%DD:~-2%
set ret=%MM: =%/%DD: =%/%YYYY: =%
endlocal & set %~5=%ret%

:GetDateTime Year Month Day Hour Minute Second
@echo off & setlocal
for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"
set "YY=%dt:~2,2%" & set "YYYY=%dt:~0,4%" & set "MM=%dt:~4,2%" & set "DD=%dt:~6,2%"
set "HH=%dt:~8,2%" & set "Min=%dt:~10,2%" & set "Sec=%dt:~12,2%"
( ENDLOCAL
     IF "%~1" NEQ "" set "%~1=%YYYY%" 
     IF "%~2" NEQ "" set "%~2=%MM%" 
     IF "%~3" NEQ "" set "%~3=%DD%"
     IF "%~4" NEQ "" set "%~4=%HH%" 
     IF "%~5" NEQ "" set "%~5=%Min%"
     IF "%~6" NEQ "" set "%~6=%Sec%"
)
exit /b

我没有使用这些脚本的经验,所以也许我遇到了基本错误?谢谢。

【问题讨论】:

  • 如果你是从 DosTips 获取代码的,你为什么不直接问那里的问题。我们在那里有一个论坛。

标签: windows batch-file command-line cmd


【解决方案1】:

在调用子例程并获得结果后,您只是错过了一些退出。在SET ano=%Ret:~6,4% 行后添加exit /b 就可以了。

【讨论】:

  • 并且在 :SubtractDate 的最后一行之后,否则调用 :SubtractDate 也会调用 :GetDateTime。
  • 是的,也是。我在测试您的代码时修复了它,但忘记了它。 :)
猜你喜欢
  • 2011-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-12
  • 1970-01-01
相关资源
最近更新 更多