无忧启动论坛

 找回密码
 注册
搜索

关于批处理里调用批处理失败的问题

查看数: 255 | 评论数: 20 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
ut0
发布时间: 2024-9-18 13:29

正文摘要:

本帖最后由 ut0 于 2024-9-18 16:06 编辑 本人之前有个批处理,里面有调用其他批处理的语句,之前都运行没有问题 但是最近想把里的语句改一下,就一直不成功,就想请教大家,帮忙看看问题出在哪里 这个批处理我 ...

回复

yzqmxh 发表于 昨天 12:48
学习一下
szwp 发表于 前天 18:42
echo on排错
Allreal 发表于 前天 16:55
ut0 发表于 2024-9-18 16:01
试了一下,还是不行啊

如果不行,也许不是这个原因。
我这试了一下,是可以的。
china.gaofeng 发表于 前天 16:52
鉴于你调用的批处理最终是如何退出的不可测,所以用call比start /wait更稳妥
2010techon 发表于 前天 16:49
call没问题,改 start 就有问题,因为start启动一个独立的窗口运行指定程序,而原批处理不会等待调用结束,直接继续执行下面的语句,如果没有参数传递或者环境问题,就在每条start后面加延迟等待调用结束再执行下一条命令
yyz2191958 发表于 前天 16:35
ut0 发表于 2024-9-18 15:09
对,因为是在U盘下面运行,所以盘符和路径肯定是不固定的

start cmd /k "%~dp0安装.bat"
yyz2191958 发表于 前天 16:33
Allreal 发表于 2024-9-18 14:18
楼主可能想在任意目录能运行。

可以的
ut0 发表于 前天 16:10
wjgyz740526 发表于 2024-9-18 16:04
既然只是dism,为什么不直接把命令放在主程序里面?要这么间接调用?
如果目录有空格,cd /d %~dp0可能要 ...

dism命令是主批处理调用的命令,我个人是想把有些dism命令单独提出来写到一起的
但又想在运行其他批处理的时候一起调用运行了

目录没有空格的,就在U盘根目录下的,文件名也都没有空格
旭东 发表于 前天 16:07
学习了
wjgyz740526 发表于 前天 16:04
本帖最后由 wjgyz740526 于 2024-9-18 16:05 编辑

既然只是dism,为什么不直接把命令放在主程序里面?要这么间接调用?
如果目录有空格,cd /d %~dp0可能要加上双引号,cd /d "%~dp0"

点评

ut0
dism命令是主批处理调用的命令,我个人是想把有些dism命令单独提出来写到一起的 但又想在运行其他批处理的时候一起调用运行了 目录没有空格的,就在U盘根目录下的,文件名也都没有空格  详情 回复 发表于 前天 16:10
ut0 发表于 前天 16:04
ppll2030 发表于 2024-9-18 14:30
好好的瞎改什么

首选简单说一下start和call的区别,一个重要的功能就是,call可以让主程序暂停 ...

对,我改成start命令就是一是不像等待副批处理运行,二是想根据情况,单独运行某些批处理

然后就是在来回跳转目录的时候,出了问题,不知道怎样才可以返回原路径继续执行命令
ut0 发表于 前天 16:01
Allreal 发表于 2024-9-18 14:17
按楼主的猜疑,试试在dismadd.bat首行加入:
path=%windir%\system32

试了一下,还是不行啊

点评

如果不行,也许不是这个原因。 我这试了一下,是可以了。  详情 回复 发表于 前天 16:55
窄口牛 发表于 前天 15:29
start “” “文件路径”,前面那对冒号最好不要省略掉,可以没有引起来的标题名。
zlq_hysy 发表于 前天 15:19
学习来了,必须指定路径?
ut0 发表于 前天 15:09
yyz2191958 发表于 2024-9-18 13:34
按照下面形式试一试:

start cmd /k "E:\安装.bat"           %【运行多个批处理】%

对,因为是在U盘下面运行,所以盘符和路径肯定是不固定的

点评

start cmd /k "%~dp0安装.bat"  详情 回复 发表于 前天 16:35
wn168cn@163.com 发表于 前天 15:04
学习一下
ppll2030 发表于 前天 14:30
好好的瞎改什么

首选简单说一下start和call的区别,一个重要的功能就是,call可以让主程序暂停, 等待子程序运行结束。
start 不加参数,直接无视等待,同时运行多个子程序的同时,主程序会继续向下运行。
所以你的多个子程序如果是有变量传递,那就只能用call,不能用start同时运行,后面的子程序无法得到变量,自然运行了也就是错的。

点评

ut0
对,我改成start命令就是一是不像等待副批处理运行,二是想根据情况,单独运行某些批处理 然后就是在来回跳转目录的时候,出了问题,不知道怎样才可以返回原路径继续执行命令  详情 回复 发表于 前天 16:04
Allreal 发表于 前天 14:18
yyz2191958 发表于 2024-9-18 13:34
按照下面形式试一试:

start cmd /k "E:\安装.bat"           %【运行多个批处理】%

楼主可能想在任意目录能运行。

点评

可以的  详情 回复 发表于 前天 16:33
Allreal 发表于 前天 14:17
本帖最后由 Allreal 于 2024-9-18 14:21 编辑

按楼主的猜疑,试试在dismadd.bat首行加入:
path=%windir%\system32

要不然每句dism变成
%windir%\system32\dism  XXXXXXXXXXXXXXXXXXXXXXXXXX
??

点评

ut0
试了一下,还是不行啊  详情 回复 发表于 前天 16:01
yyz2191958 发表于 前天 13:34
本帖最后由 yyz2191958 于 2024-9-18 13:42 编辑

按照下面形式试一试:

start cmd /k "E:\安装.bat"           %【运行多个批处理】%

点评

ut0
对,因为是在U盘下面运行,所以盘符和路径肯定是不固定的  详情 回复 发表于 前天 15:09
楼主可能想在任意目录能运行。  详情 回复 发表于 前天 14:18

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

闽公网安备 35020302032614号

GMT+8, 2024-9-20 09:41

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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