我一直在试图使用“净时间”实用工具,以获得另一台机器在networking上的时间(我不能使用现有的Windows服务,由于各种原因)。 它正在获取正确的数据,但没有正确保存到variables。 我写了一些代码,显示我正在运行。
::@ECHO off for /f "tokens=1-2,6,7,8" %%i in ('net time \\A13027-07T9') do ( if "%%i %%j"=="Current time"( set d=%%k set t=%%l set AP=%%m) ) echo %d% echo %t% echo %AP% PAUSE
任何帮助将不胜感激
问题是你正试图将3个命令塞进一行。 你可能需要用&
分开,或者把它们放在一行上。
正如斯蒂芬指出的那样,使用find
可以让你的代码看起来更干净。
无论如何,正确的缩进和代码格式有助于避免这样的简单错误。
@ECHO off setlocal for /f "tokens=6-8" %%i in ('net time \\A13027-07T9 ^| find "Current"') do ( set "d=%%i" set "t=%%j" set "AP=%%k" ) echo %d% echo %t% echo %AP% PAUSE
或者,如果您不想使用find
并希望将您的set
放在同一行:
@ECHO off setlocal for /f "tokens=1-2,6-8" %%i in ('net time \\A13027-07T9') do ( if /i "%%i %%j"=="Current time" ( set "d=%%k" & set "t=%%l" & set "AP=%%m" ) ) echo %d% echo %t% echo %AP% PAUSE
就个人而言,我发现第一个版本更具可读性。
过滤您的数据有助于:
for /f "tokens=1-2,6,7,8" %%i in ('net time \\A13027-07T9^|find "Current time"') do (
完整的工作脚本(适应我的德语窗口):
@echo off for /f "tokens=1-2,6,7,8" %%i in ('net time \\AkoyaD^|find "Aktuelle time"') do ( set d=%%k set t=%%l set AP=%%m ) echo %d% echo %t% echo %AP% PAUSE
给我:
07.04.2015 21:43:54. ECHO ist ausgeschaltet (OFF). Drücken Sie eine beliebige button . . .
“Echo ist ausgeschaltet”是因为在德国时间,没有AM / PM。