|
|
发表于 2024-1-19 12:23:04
|
显示全部楼层
用本例可以敲打一下纯P代码中的两个趣点
一。在 for /f...('命令表达式') 句式中的命令表达式若再用双引号内包裹,如 (' "命令表达式" ') 则可省去其中的转义符,示例如下
须用转义符 ('wmic diskdrive get model^,size')
不用转义符 (' "wmic diskdrive get model,size" ')
二。用于回收外部命令/程序/脚本运行结果的一个常用方法是 for /f ... %%v in ('命令表达式') do (set "v=%%v"),
但若外部命令的返回值只是一行数据,也可用另一方法
(命令表达式)>0.0 & set/p v=<0.0
当外部命令/程序/脚本被复用多次时,两个方法的系统开销其大小之分还要靠实验证明,但前者却有上述第一项有关打理字符串中特殊字符的问题。
参照以上所述再给一个版本如下,与5楼代码作个对比
- @set @v=1 /*
- @echo off & setlocal enabledelayedexpansion
- for /f "skip=1 delims=" %%a in ('wmic diskdrive get model^,size') do (
- set "size=" & set "z=%%a" & for /f "delims=" %%a in ("!z: =.!") do (set "size=%%~xa")
- for /f "tokens=1 delims= " %%b in ("!z!") do set "line=!line!型号:%%b"
- if defined size (cscript /e:jscript "%~f0" !size:~1!>0.0 & set/p v=<0.0 & set "line=!line!,容量:!v!/")
- )
- echo,!line:~,-1!
- (del 0.0) & endlocal & pause & exit/b
- */
- (WSH.arguments(0)/1073741824).toFixed(0)+'GB';
复制代码 |
|