无忧启动论坛

标题: for未执行do命令则执行后面的命令如何写 [打印本页]

作者: wimboot    时间: 2017-3-19 16:40
标题: for未执行do命令则执行后面的命令如何写
本帖最后由 wimboot 于 2017-3-20 11:00 编辑

for %%a in (x:\*.bat) do () || 命令
如何才能让前面for未发现bat文件执行后面 || 命令
主要作用是挂载wim文件(启动映像还是软件映像)后 判断下面配置文件就执行 否则打开资源管理器
(for %%a in ("Y:\*.ini" "Y:\*.cmd" "Y:\*.bat") do (if /i "%%~xa"==".ini" (pecmd.exe load "%%~a") else (pecmd.exe exec !"%%~a")))||explorer.exe "Y:"  结果||之后都不执行
(for %%a in ("Y:\*.ini" "Y:\*.cmd" "Y:\*.bat") do (if /i "%%~xa"==".ini" (pecmd.exe load "%%~a") else (pecmd.exe exec !"%%~a")))&&explorer.exe "Y:" 结果&&之后都会执行

首先我必须承认自己眼高手低没有尝试各位热心人提供的好方法 以为for不能与&& ||联用 在大家指正下确实证明自己的错误 谢谢各位大师 受教了 最终得出正确命令:
(for /f %%a in ('dir /a:-d /b "Y:\*.ini";"Y:\*.cmd";"Y:\*.bat"') do (if /i "%%~xa"==".ini" (pecmd.exe load "Y:\%%~a") else (pecmd.exe exec !"Y:\%%~a")))||explorer.exe "Y:"
作者: slore    时间: 2017-3-19 17:11
有点贪心吧,do中间加个变量flag就行了么。非要一行么。。。
作者: wimboot    时间: 2017-3-19 17:16
slore 发表于 2017-3-19 17:11
有点贪心吧,do中间加个变量flag就行了么。非要一行么。。。

后面命令能否执行全靠之前for能否执行 for怎么执行返回都是0 我也是没办法 大师想想法子
作者: freesoft00    时间: 2017-3-19 17:36
按slore 说的,加一个变量不行?
set "www="
for /f %%a in ('dir x:\*.bat') do set "www=%%a"
if "%www%"=="" echo ok

或者下面的行不行?
for /f  %%a in ('dir x:\*.bat') do if not defined %%a (echo,ok)
作者: wimboot    时间: 2017-3-19 17:47
本帖最后由 wimboot 于 2017-3-19 17:49 编辑

in (x:\*.bat) 会获取具体文件名 如果没有获取到就不会执行do() 但会执行下个命令
作者: wimboot    时间: 2017-3-19 17:57
for获取多种格式的文件后要执行的 否则执行后面命令
作者: wimboot    时间: 2017-3-19 18:37
本帖最后由 wimboot 于 2017-3-19 18:39 编辑
frg521 发表于 2017-3-19 18:24
大概写法本身就是错误的.
%%a 如果不存在,批处理是不会运行后面的任何代码,所以判断*.bat放在这里本身就  ...


主要作用是挂载wim文件(启动映像还是软件映像)后 判断下面配置文件就执行 否则打开资源管理器
for %%a in ("Y:\*.ini" "Y:\*.cmd" "Y:\*.bat") do (if /i "%%~xa"==".ini" (pecmd.exe load "%%~a") else (pecmd.exe exec !"%%~a"))||explorer.exe "Y:"  结果||之后都不执行
for %%a in ("Y:\*.ini" "Y:\*.cmd" "Y:\*.bat") do (if /i "%%~xa"==".ini" (pecmd.exe load "%%~a") else (pecmd.exe exec !"%%~a"))&&explorer.exe "Y:" 结果&&之后都会执行
作者: pseudo    时间: 2017-3-19 18:50
2>nul >nul dir /a /b x:\*.bat || 命令
2>nul >nul dir /a /b x:\*.bat && for %%a in (x:\*.bat) do ()
作者: wimboot    时间: 2017-3-19 18:54
本帖最后由 wimboot 于 2017-3-19 19:26 编辑

(for %%a in ("Y:\*.ini" "Y:\*.cmd" "Y:\*.bat") do (if /i "%%~xa"==".ini" (pecmd.exe load "%%~a"&exit) else (pecmd.exe exec !"%%~a"&exit)))&explorer.exe "Y:" 暂时这解决吧 &exit 执行一个配置文件后退出
作者: junyee    时间: 2017-3-19 19:35
(for /f %i in ('dir X:\*.bat') do echo a ) || echo ...
作者: wimboot    时间: 2017-3-19 20:31
junyee 发表于 2017-3-19 19:35
(for /f %i in ('dir X:\*.bat') do echo a ) || echo ...

主要是for命令返回值都是0:即成功 &&都会被执行 ||都不会执行
作者: junyee    时间: 2017-3-20 09:12

质疑别人的帮助之前,你自己动手试过了吗?




作者: wimboot    时间: 2017-3-20 09:51
junyee 发表于 2017-3-20 09:12
质疑别人的帮助之前,你自己动手试过了吗?

哦 谢谢了
作者: wimboot    时间: 2017-3-20 10:44
首先我必须承认自己眼高手低没有尝试各位热心人提供的好方法 以为for不能与&& ||联用 在大家指正情况下确实证明自己的错误 受教了 最终得出正确命令:(for /f %%a in ('dir /a:-d /b "Y:\*.ini";"Y:\*.cmd";"Y:\*.bat"') do (if /i "%%~xa"==".ini" (pecmd.exe load "Y:\%%~a") else (pecmd.exe exec !"Y:\%%~a")))||explorer.exe "Y:"




欢迎光临 无忧启动论坛 (http://bbs.c3.wuyou.net/) Powered by Discuz! X3.3