找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 22599|回复: 8

[系统相关] [已解决]批处理怎么执行带多个参数的exe程序?进一步求助

[复制链接]
发表于 2023-4-10 12:44:11 | 显示全部楼层 |阅读模式
本帖最后由 joanneinwork 于 2023-5-7 18:46 编辑

http://www.bathome.net/viewthrea ... mp;page=1#pid267287
问题同此贴, 原贴二楼的解决方案也有效. 但我非常困惑,但如果执行程序的路径有空格怎么办? 如qq o.bat??
求助!

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2023-4-10 17:08:27 | 显示全部楼层
没搞懂意思,执行程序的路径不是在前一个“启动目录”引号里面吗?
发表于 2023-4-11 00:02:34 | 显示全部楼层
回复 2# holley

1.在批处理脚本中使用START命令,后面紧跟待运行的EXE程序路径和参数,用引号将它们括起来:
  1. START "" "C:\Program Files\MyApp\MyApp.exe" /param1 value1 /param2 value2
复制代码
2.在引号内部,如果需要使用空格分隔路径和参数,需要在空格前加上“^”,实现转义:
  1. START "" "C:\Program^ Files\MyApp\MyApp.exe" /param1 value1 /param2 value2
复制代码
3.若需要传递多个参数,可以在EXE程序路径之后添加它们,用空格分隔:
  1. START "" "C:\Program^ Files\MyApp\MyApp.exe" /param1 value1 /param2 value2 "string parameter"
复制代码

评分

参与人数 1技术 +1 收起 理由
holley + 1 不错!

查看全部评分

发表于 2023-4-13 08:15:56 | 显示全部楼层
回复 3# yakeyun


空格多的话,转义会比较麻烦,可以使用另外一种方法:
http://bbs.bathome.net/thread-65146-1-1.html#pid264491
 楼主| 发表于 2023-4-13 10:49:15 | 显示全部楼层
回复 3# yakeyun


    我试了
  1. start "" "F:\p\ComputePSNR.exe" 0.yuv 2.yuv "30 0"
复制代码
执行不成功,
  1. start "" F:\p\ComputePSNR.exe "0.yuv" 2.yuv "30 0"
复制代码
成功,把执行程序的引号去掉反而成功
现在问题是如果应用程序有空格怎么办.谢谢解答
发表于 2023-4-13 11:29:15 | 显示全部楼层
回复 5# joanneinwork


试试4楼链接里面的方法
  1. start /b cmd /c ,"F:\p\ComputePSNR.exe" "0.yuv" 2.yuv "30 0"
复制代码
发表于 2023-4-13 18:17:24 | 显示全部楼层
本帖最后由 aloha20200628 于 2023-4-13 19:28 编辑

仅供参考》批处理脚本中采用start,通常是为解决两个问题,一是能用并行方式启运一个可执行文件,二是能用无窗口方式启运一个批处理脚本。
    第一者用法的最简句式如:
    start "窗口标题" 可执行文件的路径文件名 参数
    示例如 start "" c:\abc\xyz.exe 123 或 start "" c:\abc\xyz.vbs 123
    如果可执行文件的路径文件名和参数均含有空格,则各自须用双引号包裹
    示例如 start "" "c:\a c\x z.exe" "1 3" 或 start "" "c:\a c\x z.vbs" "1 3"

    第二者的用法则须注意,因涉及一个据说已被公认的bug,就是批处理脚本路径文件名及其参数两者不能同时含有空格
    示例如 start "" /d "c:\a c" /b "x z.bat" 123 或 start "" /b c:\abc\xyz.cmd "1 3" 均可
    但如果都有空格,则须用call搭桥
    示例如 start "" /b call "c:\a c\x z.bat" "1 3" 或 start "" /b call "c:\a c\x z.cmd" "1 3"
 楼主| 发表于 2023-4-15 19:44:08 | 显示全部楼层
回复 7# aloha20200628


    应该是您说的二类方法,存在的bug! 谢谢给出解决方案!!!!
 楼主| 发表于 2023-4-15 19:44:42 | 显示全部楼层
回复 6# Batcher


    这个方法就是不行,必须得把应该程序的双引号去掉才能运行
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 11:09 , Processed in 0.020734 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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