关于Consut_start.bat文件,双击运行报系统找不到指定文件的问题!

文章讲述了在Windows环境下,如何解决批处理文件中Consul服务启动时因路径问题导致的错误。作者提出使用环境变量代替硬编码路径,并给出了详细步骤和原因分析。
摘要由CSDN通过智能技术生成

原始的代码是这样的:

@echo.服务启动......  
@echo off  
@sc create Consul binpath= "‪D:\Consul\consul_1.18.1_windows_amd64\consul.exe agent -server -ui -bind=127.0.0.1 -client=0.0.0.0 -bootstrap-expect  1  -data-dir D:\Consul\consul_1.18.1_windows_amd64\mydata   "
@net start Consul
@sc config Consul start= AUTO  
@echo.Consul start is OK......success
@pause

双击运行之后报错:

具体原因可能是,在运行.bat文件时,系统去找目录时并不会去你的其它盘符找,而是直接去C盘找,这就导致了系统找不到指定文件,但是服务是创建成功了的。可以尝试一下以管理员身份运行以下命令:(反正我是没成功,但是有些人的是可以的)
 

setx ComSpec %SystemRoot%\system32\cmd.exe /m

在运行之前记得先删除你原来运行失败所创建的服务:
 

sc delete Consul

接下来就是我的解决方案,既然指定路径系统找不到,可以想一下我们平时设置系统变量的时候都是定义一个Key,值为路径,所以也可以试一下这种办法,将我们的启动目录以及持久化存储目录都赋值给指定的key,再引用这些指定的key来驱动程序,而不是直接硬编码,代码如下:
 

@echo off
@echo 服务启动...
@set "consulPath=D:\Consul\consul_1.18.1_windows_amd64\consul.exe"
@set "dataDir=D:\Consul\consul_1.18.1_windows_amd64\mydata"
@sc create Consul binpath= "%consulPath% agent -server -ui -bind=127.0.0.1
-client=0.0.0.0 -bootstrap-expect 1 -data-dir %dataDir%"
@net start Consul
@sc config Consul start= AUTO
@echo Consul start is OK... success
@pause

运行之前记得删除原来创建的服务,不然可能会报错,运行结果如下:

访问也没问题啦!

不需要关注这个中文乱码问题,要解决也很简单,设置一下编码方式即可,至于为什么这样可以,也许是原始脚本在路径中有一些问题(我没发现),可能是因为不可见字符或其他格式问题导致的。在修改中尝试使用了明确的变量来表示路径,并使用双引号来包裹路径,这有助于确保路径中的空格或其他特殊字符被正确处理。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值