无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 4320|回复: 13

[已解决] for未执行do命令则执行后面的命令如何写

[复制链接]
发表于 2017-3-19 16:40:40 | 显示全部楼层 |阅读模式
本帖最后由 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:"
发表于 2017-3-19 17:11:36 | 显示全部楼层
有点贪心吧,do中间加个变量flag就行了么。非要一行么。。。

点评

后面命令能否执行全靠之前for能否执行 for怎么执行返回都是0 我也是没办法 大师想想法子  详情 回复 发表于 2017-3-19 17:16
回复

使用道具 举报

 楼主| 发表于 2017-3-19 17:16:26 来自手机 | 显示全部楼层
slore 发表于 2017-3-19 17:11
有点贪心吧,do中间加个变量flag就行了么。非要一行么。。。

后面命令能否执行全靠之前for能否执行 for怎么执行返回都是0 我也是没办法 大师想想法子
回复

使用道具 举报

发表于 2017-3-19 17:36:20 | 显示全部楼层
按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)
回复

使用道具 举报

 楼主| 发表于 2017-3-19 17:47:59 来自手机 | 显示全部楼层
本帖最后由 wimboot 于 2017-3-19 17:49 编辑

in (x:\*.bat) 会获取具体文件名 如果没有获取到就不会执行do() 但会执行下个命令
回复

使用道具 举报

 楼主| 发表于 2017-3-19 17:57:30 来自手机 | 显示全部楼层
for获取多种格式的文件后要执行的 否则执行后面命令
回复

使用道具 举报

 楼主| 发表于 2017-3-19 18:37:38 | 显示全部楼层
本帖最后由 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:" 结果&&之后都会执行
回复

使用道具 举报

发表于 2017-3-19 18:50:18 | 显示全部楼层
2>nul >nul dir /a /b x:\*.bat || 命令
2>nul >nul dir /a /b x:\*.bat && for %%a in (x:\*.bat) do ()
回复

使用道具 举报

 楼主| 发表于 2017-3-19 18:54:26 | 显示全部楼层
本帖最后由 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 执行一个配置文件后退出
回复

使用道具 举报

发表于 2017-3-19 19:35:31 | 显示全部楼层
(for /f %i in ('dir X:\*.bat') do echo a ) || echo ...

点评

主要是for命令返回值都是0:即成功 &&都会被执行 ||都不会执行  详情 回复 发表于 2017-3-19 20:31
回复

使用道具 举报

 楼主| 发表于 2017-3-19 20:31:49 | 显示全部楼层
junyee 发表于 2017-3-19 19:35
(for /f %i in ('dir X:\*.bat') do echo a ) || echo ...

主要是for命令返回值都是0:即成功 &&都会被执行 ||都不会执行
回复

使用道具 举报

发表于 2017-3-20 09:12:23 | 显示全部楼层

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



QQ截图20170320090835.png

点评

哦 谢谢了  详情 回复 发表于 2017-3-20 09:51
回复

使用道具 举报

 楼主| 发表于 2017-3-20 09:51:13 | 显示全部楼层
junyee 发表于 2017-3-20 09:12
质疑别人的帮助之前,你自己动手试过了吗?

哦 谢谢了
回复

使用道具 举报

 楼主| 发表于 2017-3-20 10:44:58 | 显示全部楼层
首先我必须承认自己眼高手低没有尝试各位热心人提供的好方法 以为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:"
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-3-29 19:07

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表