[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[系统相关] winpe3.0下这样的批处理该如何写?

用于判断是否同时满足如下两个条件,如满足则将移动设备盘符赋予变量UFD
1、是否存在移动存储设备
2、移动存储设备根目录下是否存在文件file1

setlocal EnableDelayedExpansion
for /F "usebackq tokens=2 delims==" %%a in (`wmic LogicalDisk where "DriveType='2'"get DeviceID /Value`) do (IF EXIST %%a\file1 set UFD=%%a)
echo %UFD% !UFD!
命令返回:“echo 处于打开/关闭状态”

下面这个命令执行却正常
setlocal EnableDelayedExpansion
for /F "usebackq tokens=2 delims==" %%a in (`wmic LogicalDisk where "DriveType='2'"get DeviceID /Value`) do echo %%a
没有行不行?

回复  tjx_nj


    没在PE上用过命令, 不过你IF判断有没有的时候 怎么没有引号 又不是数字,这里报错 ...
miqilaosu 发表于 2019-6-30 11:08


引号我也试过,也不行。
没有行不行?

TOP

本帖最后由 tjx_nj 于 2019-6-30 14:07 编辑
一般pe下没有WMIC
命令少个空格...
echo 建议改成echo,或echo=
如果可以正常使用wmic建议重新加载一次fo ...
/zhqsystem/zhq 发表于 2019-6-29 23:35


1、PE中我添加了pe-wmi的包,虽然与win7环境不完全一致,但是我的这个命令是在pe下可以得到需要的数据的
2、关于过滤空行的问题,我贴子里第二条命令的返回值就是没有空行的,你的环境是什么?怎么会有空行?
没有行不行?

TOP

回复 8# kingshui


这个代码可以借鉴,谢谢!
折腾了几天终于解决,原因是if exist %%afile1 echo ...,不能这样写,要写成下面这样:
if exist %file% ...

setlocal EnableDelayedExpansion
for /F "usebackq tokens=2 delims==:" %%a in (`wmic LogicalDisk where "DriveType='2'"get DeviceID /Value`) do (
set UFD=%%a
set File=%UFD%:\file1
IF EXIST %file% commander...
)

也就是说if之后的判断条件虽然可以是变量但是不可以嵌套运算,必须提前准备好。
另外我之前的for语句delims分隔符没有“:”,现在增加了。原因是当半角冒号作为变量值的一部分时,如何该变量参加变量组合的时候系统会把变量里的半角冒号当作控制字符,而不是普通字符,这样就得不到需要的结果。
没有行不行?

TOP

返回列表