[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

本帖最后由 joanneinwork 于 2023-5-7 18:46 编辑

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

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

没搞懂意思,执行程序的路径不是在前一个“启动目录”引号里面吗?

TOP

回复 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

评分人数

TOP

回复 3# yakeyun


空格多的话,转义会比较麻烦,可以使用另外一种方法:
http://bbs.bathome.net/thread-65146-1-1.html#pid264491
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 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"
复制代码
成功,把执行程序的引号去掉反而成功
现在问题是如果应用程序有空格怎么办.谢谢解答

TOP

回复 5# joanneinwork


试试4楼链接里面的方法
  1. start /b cmd /c ,"F:\p\ComputePSNR.exe" "0.yuv" 2.yuv "30 0"
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

本帖最后由 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"

TOP

回复 7# aloha20200628


    应该是您说的二类方法,存在的bug! 谢谢给出解决方案!!!!

TOP

回复 6# Batcher


    这个方法就是不行,必须得把应该程序的双引号去掉才能运行

TOP

返回列表