标题: [文件操作] [已解决]批处理获取wmic命令结果的格式问题 [打印本页]
作者: maghreb 时间: 2023-4-7 09:18 标题: [已解决]批处理获取wmic命令结果的格式问题
- @echo off&setlocal enabledelayedexpansion
- for /f "skip=1 tokens=1,3,5 delims=. " %%a in ('wmic datafile where name^="D:\\1.txt" get LastModified') do (set "aaa=%%a")
- echo !aaa!
- pause
复制代码
显示:
ECHO 处于关闭状态。
请按任意键继续. . .
请教上面哪里出问题了?非常感谢!!!
作者: lancer 时间: 2023-4-7 10:53
本帖最后由 lancer 于 2023-4-7 11:13 编辑
将echo,!aaa!移到set后面就可以正常显示了,具体原因我说不出来,但是感觉跟数字精度有关系,不能超过32位精度。出了循环,aaa保存的数字就丢失了。应该是太大了。32位精度的数字最大只能是4294967296,而你的日期太大了20230407103622,不能保存。。。会立刻失效。。- @echo off&setlocal enabledelayedexpansion
- for /f "skip=1 tokens=1,3,5 delims=. " %%a in ('wmic datafile where name^="D:\\1.txt" get LastModified') do (set "aaa=%%a"&&echo,!aaa!)
- pause
复制代码
作者: lancer 时间: 2023-4-7 11:07
其实获取文件的修改时间可以用
dir /tw
作者: holley 时间: 2023-4-7 11:12
本帖最后由 holley 于 2023-4-7 11:24 编辑
回复 1# maghreb - @echo off&setlocal enabledelayedexpansion
- for /f "skip=1 tokens=1,3,5 delims=. " %%a in ('wmic datafile where name^="D:\\1.txt" get LastModified') do (
- if %%a lss 0 goto end
- set aaa=%%a
- echo !aaa!
- echo 最后修改: !aaa:~0,4! 年 !aaa:~4,2! 月 !aaa:~6,2! 日 !aaa:~8,2! 时 !aaa:~10,2! 分 !aaa:~12,2! 秒
- )
- :end
- pause>nul
复制代码
作者: buyiyang 时间: 2023-4-7 11:28
这种问题已经有很多了,http://www.bathome.net/thread-65724-1-1.html。wmic get的结果行尾有多余的空格和回车符,末行也有多余的回车符;如果加上/value参数,首尾几个空行及每行行尾都有多余的回车符。有很多方法可以过滤,这是一个:- for /f "skip=1 tokens=1,3,5 delims=. " %%a in ('wmic datafile where name^="D:\\1.txt" get LastModified ^| findstr .') do (set "aaa=%%a")
复制代码
作者: buyiyang 时间: 2023-4-7 11:35
回复 2# lancer
跟数字精度没关系,set是设字符串变量,不是数字表达式,你之所以没有显示“ECHO 处于关闭状态”,是因为你使用了“echo,”,实际上是多显示了空行。而且你把echo放循环里,让变量的实际内容没有被回车符覆盖。
作者: buyiyang 时间: 2023-4-7 11:42
这实际上是关于wmic结果的格式问题,建议楼主改一下标题,让问题更具体。
作者: lancer 时间: 2023-4-7 16:50
回复 6# buyiyang
学习了。。专门去看了你的帖子,不能说全懂,但至少这个问题懂了。。。
关于wmic还是用的太少了,哎。。。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |