Board logo

标题: [文件操作] 批处理如何使用相对路径执行外部程序? [打印本页]

作者: 15972587869    时间: 2016-1-19 10:56     标题: 批处理如何使用相对路径执行外部程序?

本帖最后由 pcl_test 于 2016-1-19 13:15 编辑

请教:如何写批处理cmd用相对路径调用外部程序?



以下批处理能成功调用  D:\wentong\wentong.exe

@echo off
start cmd /k "cd/d d:\wentong&&wentong.exe"
exit
@echo off

我想用相对路径写批处理,无论wentong.exe置于哪个文件夹,只要把批处理置于和wentong.exe同一目录,就能启动wentong.exe,类似于apppath/wentong.exe的方式,不知道该批处理如何写?谢谢
作者: ygqiang    时间: 2016-1-19 11:12

回复 1# 15972587869
  1.     rem 全盘搜索:xx软件.exe。只要找到任意1个,就goto。找不到就另goto
  2. set "FileName=xx软件.exe"
  3. echo 正在搜索,请稍候...
  4. echo 本地磁盘:
  5. for %%a in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
  6. fsutil fsinfo drivetype %%a: | find "固定">nul && (echo %%a) && (
  7. if exist %%a:\ (
  8.         for /f "delims=" %%b in ('dir /a-d /s /b "%%a:\*%FileName%" 2^>nul') do (
  9.             if /i "%%~nxb" equ "%FileName%" (
  10.                 echo,%%b
  11. goto :nexta
  12.             )
  13.         )
  14.     )
  15. )
  16. )
  17. ———————————————————————
  18. :firsta
  19. echo firstaaa
  20. exit
  21. ———————————————————————
  22. :nexta
  23. echo nextaaa
  24. exit
复制代码

作者: 15972587869    时间: 2016-1-19 11:49

全盘搜索:xx软件.exe,那会很花费时间吧
作者: 15972587869    时间: 2016-1-19 11:49

有没直接指定exe的方法
作者: 回家路上    时间: 2016-1-19 15:23

相对位置不就是
  1. ..\..\..\xxxxx
  2. .\xxxxx
复制代码
.        当前目录
..       上一级目录
作者: 15972587869    时间: 2016-1-19 17:30

我的意思是用类似于VB的
apppath,如

@echo off
start cmd /k " apppath\wentong.exe"
exit
@echo off

即批处理文件和exe文件放一个目录,点击批处理就能执行exe文件,不知道怎么用批处理正确表达
作者: ygqiang    时间: 2016-1-19 22:11

回复 6# 15972587869
  1. @echo off
  2. set PWD=%~sdp0
  3. if exist %~sdp0\wentong.exe (
  4. start "" "%PWD%\wentong.exe"
  5. )
复制代码

作者: pcl_test    时间: 2016-1-19 22:18

vb的app.path就是批处理的%~dp0,那么你的要求只要start "" wentong.exe即可
作者: 15972587869    时间: 2016-1-20 08:50

谢谢楼上二位,按你们说的顺利解决
作者: 15972587869    时间: 2016-1-20 09:11

请教把批处理放在wentong\文件夹的上一级目录,调用wentong.exe又该怎么写呢?
作者: 回家路上    时间: 2016-1-20 11:51

  1. wentong.exe
复制代码
改为
  1. wentong\wentong.exe
复制代码

作者: 15972587869    时间: 2016-1-20 14:27

本帖最后由 15972587869 于 2016-1-20 14:30 编辑

[请教把批处理放在wentong\文件夹的上一级目录,调用wentong.exe又该怎么写呢?

@echo off
set PWD=%~sdp0
if exist %~sdp0\wentong.exe (
start "" "%PWD%\wentong.exe"
)

像楼上这样引用,不知道如何写?
作者: ygqiang    时间: 2016-1-20 15:12

回复 12# 15972587869
  1.     @echo off
  2. set PWD=%~sdp0
  3. if exist %~sdp0\wentong\wentong.exe (
  4. start "" "%PWD%\wentong\wentong.exe"
  5. )
复制代码

作者: 15972587869    时间: 2016-1-20 17:02

本帖最后由 15972587869 于 2016-1-20 17:14 编辑

回复 13# ygqiang


用你的代码运行了下,调用不出

wentong下载:http://pan.baidu.com/s/1gek1UBT
麻烦您试试,谢谢!
作者: ygqiang    时间: 2016-1-20 17:33

回复 14# 15972587869
  1.         @echo off
  2. set PWD=%~sdp0
  3. if exist "%PWD%\wentong\wentong.exe" (
  4. start "" "%PWD%\wentong\wentong.exe"
  5. )
复制代码

作者: 15972587869    时间: 2016-1-20 17:44

回复 15# ygqiang


   依然调不出
作者: ygqiang    时间: 2016-1-20 17:50

回复 14# 15972587869
  1.         @echo off
  2. set PWD=%~sdp0
  3. if exist "%PWD%\wentong\wentong.exe" (
  4. echo file ok
  5. pause
  6. start "" "%PWD%\wentong\wentong.exe"
  7. pause
  8. )
  9. echo file not exist
  10. pause
复制代码
给出截图。
作者: 15972587869    时间: 2016-1-21 10:23

回复  15972587869
ygqiang 发表于 2016-1-20 17:33



    用您的代码仍然调不出
作者: ygqiang    时间: 2016-1-21 12:20

回复 18# 15972587869


    给出截图看看。。。。    给出截图看看。。。。    给出截图看看。。。。
作者: 15972587869    时间: 2016-1-21 12:39

你的代码运行后这样的

正常调用运行应该是这样的
作者: ygqiang    时间: 2016-1-21 13:02

本帖最后由 ygqiang 于 2016-1-21 13:04 编辑

回复 20# 15972587869
  1.      @echo off
  2. set PWD=%~sdp0
  3. if exist "%PWD%wentong\wentong.exe" (
  4. echo file ok
  5. echo "%PWD%wentong\wentong.exe"
  6. pause
  7. start "" "%PWD%wentong\wentong.exe"
  8. pause
  9. exit
  10. )
复制代码

作者: 15972587869    时间: 2016-1-21 13:35

回复 21# ygqiang


还是调不出

wentong下载地址:http://pan.baidu.com/s/1gek1UBT
麻烦您下载本机上测试下,非常谢谢!
作者: ygqiang    时间: 2016-1-21 13:44

本帖最后由 ygqiang 于 2016-1-21 13:46 编辑

回复 22# 15972587869


    下载下来。解压卡。

win7 64系统环境下,双击wentong.exe,照样没反应?

感觉是你自己软件的问题。。
作者: 15972587869    时间: 2016-1-21 14:04

还是调不出
作者: 15972587869    时间: 2016-1-21 14:08

回复 23# ygqiang


我这双击能调出呢
作者: ygqiang    时间: 2016-1-21 14:10

回复 25# 15972587869


    wentong下载地址:http://pan.baidu.com/s/1gek1UBT
win7 64系统环境,下载本机。解压开,双击里面的wentong.exe,没反应。。。
作者: 15972587869    时间: 2016-1-21 14:15

回复 26# ygqiang


我也是64的win7,双击能调出
作者: ygqiang    时间: 2016-1-21 14:33

回复 27# 15972587869
  1.          @echo off
  2. set PWD=%~sdp0
  3. if exist "%PWD%\wentong\wentong.exe" (
  4. echo file ok
  5. echo "%PWD%\wentong\wentong.exe"
  6. pause
  7. start "" "%PWD%\wentong\wentong.exe"
  8. pause
  9. exit
  10. )
复制代码
代码没问题。是exe软件本身的问题。。
作者: 15972587869    时间: 2016-1-21 14:36

哦,那算了,谢谢您!
作者: ygqiang    时间: 2016-1-21 14:37

回复 27# 15972587869


    win7 64系统下,exe软件,双击可以运行。
但进入设置里面,点“确定”。照样会出错退出。
作者: 15972587869    时间: 2016-1-21 16:00

本帖最后由 15972587869 于 2016-1-21 16:09 编辑

@echo off
start cmd /k "cd/c c:\wentong&&wentong.exe"
exit
@echo off
谢谢大家,通过大家的提示,我做出来了。谢谢大家
作者: ygqiang    时间: 2016-1-21 16:14

回复 31# 15972587869


    这就是最终代码?跟1楼的没啥差别啊?
作者: ygqiang    时间: 2016-1-21 16:15

回复 31# 15972587869


    cd /d c:\wentong
作者: 15972587869    时间: 2016-1-21 16:55

想用apppath,实在没办法,就把wentong文件夹放C盘根目录,用绝对路径方法调用了
作者: 15972587869    时间: 2016-1-26 15:25

经过大家反复指点,终于解决
谢谢大家!
  1. @echo off
  2. set PWD=%~sdp0
  3. echo %pwd%\wentong\wentong.exe
  4. start cmd /k "cd/d %pwd%\wentong&&wentong.exe"
  5. exit
  6. @echo off
复制代码

作者: ygqiang    时间: 2016-1-26 16:01

本帖最后由 ygqiang 于 2016-1-26 16:06 编辑

回复 35# 15972587869
  1.     @echo off
  2. set PWD=%~sdp0
  3. echo %pwd%\wentong\wentong.exe
  4. start "" "%pwd%\wentong\wentong.exe"
  5. exit
复制代码
这个代码,测试过。不好用。
作者: ygqiang    时间: 2016-1-26 16:05

回复 35# 15972587869
  1.     @echo off
  2. taskkill /f /im wentong.exe
  3. set PWD=%~sdp0
  4. echo %pwd%\wentong\wentong.exe
  5. cd /d %pwd%\wentong
  6. start "" "wentong.exe"
  7. exit
复制代码
这个代码,测试了。好用。。。
作者: ygqiang    时间: 2016-1-26 16:12     标题: 批处理如何使用相对路径执行外部程序?

[已解决]2个bat代码。调用exe软件的方法不太一样。为啥其中1个调用会出错?



这个代码,测试过。不好用,会弹出错误提示。
  1. @echo off
  2. taskkill /f /im wentong.exe
  3. set PWD=%~sdp0
  4. echo %pwd%\wentong\wentong.exe
  5. start "" "%pwd%\wentong\wentong.exe"
  6. exit
复制代码
这个代码,测试了。好用,exe软件正常运行。。。
  1. @echo off
  2. taskkill /f /im wentong.exe
  3. set PWD=%~sdp0
  4. echo %pwd%\wentong\wentong.exe
  5. cd /d %pwd%\wentong
  6. start "" "wentong.exe"
  7. exit
复制代码

作者: WHY    时间: 2016-1-26 16:30

本帖最后由 WHY 于 2016-1-26 18:28 编辑

一些程序正常运行时需要动态链接库支持,除非是单文件绿色版EXE

第一个BAT没有切换到wentong.exe所在目录,在当前目录下由于找不到相应的dll文件,所以报错
作者: 15972587869    时间: 2016-1-26 17:01

谢谢,您和我的都好用!!:lol
作者: ygqiang    时间: 2016-1-26 17:48

回复 2# WHY
  1. @echo off
  2. taskkill /f /im wentong.exe
  3. set PWD=%~sdp0
  4. echo %pwd%\wentong\wentong.exe
  5. start cmd /k "cd/d %pwd%\wentong&&wentong.exe"
  6. exit
复制代码
  1. @echo off
  2. taskkill /f /im wentong.exe
  3. set PWD=%~sdp0
  4. echo %pwd%\wentong\wentong.exe
  5. cd /d %pwd%\wentong
  6. start "" "wentong.exe"
  7. exit
复制代码
这2个代码,有啥差别呢?多谢。。
作者: WHY    时间: 2016-1-26 18:32

回复 3# ygqiang


    没看出有区别。非要说区别,第一个是通过开启另一个CMD进程启动wentong.exe,而第2个是直接启动。




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