Board logo

标题: [文本处理] [已解决]请问批处理如何把2个带路径的变量拼接起来运行? [打印本页]

作者: iop890    时间: 2023-10-30 14:53     标题: [已解决]请问批处理如何把2个带路径的变量拼接起来运行?

本帖最后由 iop890 于 2023-11-1 09:18 编辑

两个变量如下:
  1. set A="C:\Program Files (x86)\AAA.exe"
  2. set B="D:\BBB.txt"
复制代码
直接用绝对路径运行是正常的,"C:\Program Files (x86)\AAA.exe" start "D:\BBB.BBB"

但是用变量拼接后就报错,start不是内部或外部命令,也不是可运行的程序或批处理文件。
%A% start %B%

还试过set s=" start "(已经把start前后空格加上了)之后用%A%%s%%B%来运行了,也不行
作者: 77七    时间: 2023-10-30 15:15

请把完整报错信息发出来看看
作者: czjt1234    时间: 2023-10-30 15:18

对比楼主的两行代码,明显少了引号
"%A%" start "%B%"
作者: iop890    时间: 2023-10-30 15:55

回复 2# 77七


    现在不是报错,直接开了个新的cmd窗口
作者: iop890    时间: 2023-10-30 15:55

本帖最后由 iop890 于 2023-10-30 16:16 编辑
对比楼主的两行代码,明显少了引号
"%A%" start "%B%"
czjt1234 发表于 2023-10-30 15:18



加了也报错,会说'""' 不是内部或外部命令,也不是可运行的程序或批处理文件。
作者: iop890    时间: 2023-10-30 16:17

请把完整报错信息发出来看看
77七 发表于 2023-10-30 15:15



    '""' 不是内部或外部命令,也不是可运行的程序或批处理文件。

都是这句话,不是start就是双引号
作者: 77七    时间: 2023-10-30 16:21

回复 6# iop890


   应该是批处理文件的换行符问题,你可以试试新建一个空白的文本,直接手敲命令,不要从其它地方复制。
作者: iop890    时间: 2023-10-30 16:40

回复 7# 77七


     我用notepad2显示换行符,每行都是CRLF啊
作者: Five66    时间: 2023-10-30 16:44

你该不会是在for里面set的A和B
还有start应该是内部或外部命令吧
作者: Batcher    时间: 2023-10-30 17:05

回复  77七


    现在不是报错,直接开了个新的cmd窗口
iop890 发表于 2023-10-30 15:55



start本身是一个批处理内部命令,它可以用来打开另外一个程序或文件。
从你顶楼的描述来看,似乎是希望把 start "D:\BBB.BBB" 作为参数传递给 "C:\Program Files (x86)\AAA.exe" 对吧?

建议尝试以下步骤:

请参考Q-06把脚本重命名为 test.bat(不要用start.bat或start.cmd):
https://mp.weixin.qq.com/s/Koje4FufWxWBs7ioDy_LJA

请参考Q-04把test.bat文件保存为ANSI编码:
https://mp.weixin.qq.com/s/Koje4FufWxWBs7ioDy_LJA

如果仍然有问题,请把你顶楼尝试成功的第一种写法,和不成功的第二种写法,这两个bat文件打包上传到网盘。
作者: iop890    时间: 2023-10-30 21:15

本帖最后由 iop890 于 2023-10-30 21:17 编辑

回复 10# Batcher


    对的!其实我是想用vmware自带的命令行启动多个虚拟机镜像,start参数是它内置的,所以改不了
并且我的镜像路径还带中文字符,所以也必须加双引号,两个问题叠加起来就有点麻烦了。。。
作者: Batcher    时间: 2023-10-30 21:20

回复 11# iop890


    你安装的是 VMware Workstation 还是 VMware Player 呢?哪个版本?
作者: iop890    时间: 2023-10-30 21:32

start本身是一个批处理内部命令,它可以用来打开另外一个程序或文件。
从你顶楼的描述来看,似乎是希 ...
Batcher 发表于 2023-10-30 17:05



已上传,多谢大佬了!!

https://t.wss.ink/f/cjr5m5te3r7
作者: iop890    时间: 2023-10-30 21:35

回复 12# Batcher


    vmware workstation 17.0.0
作者: 77七    时间: 2023-10-30 21:53

回复 13# iop890


仔细看看失败.bat的第4、11行
作者: Batcher    时间: 2023-10-30 22:29

回复 13# iop890


    先把第4行的 goto menu 删掉再说
作者: terse    时间: 2023-10-30 23:12

set vm_path="C:\Program Files (x86)\VMware\VMware Workstation\vmrun.exe"
set wxy2_path="D:\VMs镜像\vm-wxy2\wxy.vmx"
goto menu
作者: iop890    时间: 2023-10-31 11:51

本帖最后由 iop890 于 2023-10-31 11:55 编辑
回复  iop890


仔细看看失败.bat的第4、11行
77七 发表于 2023-10-30 21:53



    跳过了变量赋值的两个语句。。。。。。。我的猪脑子。。。
作者: iop890    时间: 2023-10-31 11:57

问题解决了,多谢楼上的几位高人

这是不是就是类似c语言的指针啊?第一次感受到了坑。。。
作者: iop890    时间: 2023-10-31 13:45

set vm_path="C:\Program Files (x86)\VMware\VMware Workstation\vmrun.exe"
set wxy2_path="D:\VMs镜像\ ...
terse 发表于 2023-10-30 23:12



    实测不写这句goto menu也行,因为必定会走到这步




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2