batch-file – 用于在windows命令中循环打印日期两次
我使用
Windows批处理命令将特定时间的CPU负载保存到名为cpu.csv的文件中.我使用以下命令
@for /f "skip=1" %p in ('wmic cpu get loadpercentage') do @echo %DATE%%TIME%,%p>>cpu.csv 哪个工作正常,但如下所示,提供日期和时间的双重输入 4,Thu 06/23/201613:59:09.42,Thu 06/23/201613:59:09.42 这意味着只有在需要时才打印一次负载百分比,但是日期打印两次. 解决方法
事实:
> 解决方案#1:嵌套循环 for /f "skip=1" %p in ('wmic cpu get loadpercentage') do @for %g in (%~p) do @echo %DATE%%TIME%,%g 这里的for循环是 >%p来检索loadpercentage值; 见Dave Benham的 解决方案#2:强制空令牌而不是整行: for /f "tokens=2 skip=1" %p in ('wmic cpu get deviceID^,loadpercentage^,Status') do @echo %DATE%%TIME%,%p 说明:第二个令牌 >在有效行中解析为loadpercentage值(并且尾随< CR>现在属于忽略的第3个令牌); 编辑:将包含完整output redirection的批处理文件添加到.csv文件中.请注意csv分隔符更改为;分号仅作为%time%value包含,逗号在我当前的语言环境中: @ECHO OFF SETLOCAL enableextensions disabledelayedexpansion rem Solution #1 for /f "skip=1" %%p in (' wmic cpu get loadpercentage ') do for %%g in (%%~p) do >>f38001801.csv echo %DATE%;%TIME%;%%g >NUL 2>&1 timeout /T 2 /NOBREAK rem Solution #2 for /f "tokens=2 skip=1" %%p in (' wmic cpu get deviceID^,Status ') do >>s38001801.csv echo %DATE%;%TIME%;%%p 输出( >输出文件为了确定而被删除; ): ==> del *38001801.csv ==> d:batso38001801.bat ==> d:batso38001801.bat ==> d:batso38001801.bat ==> type *38001801.csv f38001801.csv 24.06.2016;13:41:57,53;1 24.06.2016;13:42:19,10;11 24.06.2016;13:42:31,08;4 s38001801.csv 24.06.2016;13:42:00,11;1 24.06.2016;13:42:22,12;2 24.06.2016;13:42:34,13;1 ==> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |