无忧启动论坛

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

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

[复制链接]
跳转到指定楼层
1#
发表于 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:"
2#
发表于 2017-3-19 17:11:36 | 只看该作者
有点贪心吧,do中间加个变量flag就行了么。非要一行么。。。

点评

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

使用道具 举报

3#
 楼主| 发表于 2017-3-19 17:16:26 来自手机 | 只看该作者
slore 发表于 2017-3-19 17:11
有点贪心吧,do中间加个变量flag就行了么。非要一行么。。。

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

使用道具 举报

4#
发表于 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)
回复

使用道具 举报

5#
 楼主| 发表于 2017-3-19 17:47:59 来自手机 | 只看该作者
本帖最后由 wimboot 于 2017-3-19 17:49 编辑

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

使用道具 举报

6#
 楼主| 发表于 2017-3-19 17:57:30 来自手机 | 只看该作者
for获取多种格式的文件后要执行的 否则执行后面命令
回复

使用道具 举报

7#
 楼主| 发表于 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:" 结果&&之后都会执行
回复

使用道具 举报

8#
发表于 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 ()
回复

使用道具 举报

9#
 楼主| 发表于 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 执行一个配置文件后退出
回复

使用道具 举报

10#
发表于 2017-3-19 19:35:31 | 只看该作者
(for /f %i in ('dir X:\*.bat') do echo a ) || echo ...

点评

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

使用道具 举报

11#
 楼主| 发表于 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:即成功 &&都会被执行 ||都不会执行
回复

使用道具 举报

12#
发表于 2017-3-20 09:12:23 | 只看该作者

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



点评

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

使用道具 举报

13#
 楼主| 发表于 2017-3-20 09:51:13 | 只看该作者
junyee 发表于 2017-3-20 09:12
质疑别人的帮助之前,你自己动手试过了吗?

哦 谢谢了
回复

使用道具 举报

14#
 楼主| 发表于 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-4-20 03:47

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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