无忧启动论坛

标题: 批处理全盘搜索指定配置文件,并加载运行。求高手指教!!! [打印本页]

作者: 熄灭的烟    时间: 2017-7-26 12:00
标题: 批处理全盘搜索指定配置文件,并加载运行。求高手指教!!!
程序文件名:test.exe, 配置文件:test.ini,加载配置文件后启动运行参数:test.exe d:\123\test.ini (备注:这里假设配置文件test.ini在D盘123文件夹下),如果没有就直接启动运行test.exe

批处理如何写个全盘搜索123下面的test.ini文件,如果有就执行test.exe 盘符:\123\test.ini,如果没有就执行test.exe
作者: 邪恶海盗    时间: 2017-7-26 20:27
我写过一个现成的叫SWAI,自己搜...
作者: nttwqz    时间: 2017-7-27 10:47
你这还注册个马甲

  1. @echo off
  2. pushd %~dp0
  3. for /f "tokens=2 delims=," %%i in ('wmic datafile where "filename='test' and extension='exe' or filename='test' and extension='ini'" get name^,version /format:csv ^| findstr /i /c:"test"') do (
  4.         if /i "%%~xi"==".exe" set "exefile=%%~i"
  5.         if /i "%%~xi"==".ini" set "inifile=%%~i"
  6. )
  7. start /wait %exefile% %inifile%
  8. pause
复制代码

作者: 熄灭的烟    时间: 2017-7-27 20:02
nttwqz 发表于 2017-7-27 10:47
你这还注册个马甲

我不是谁的马甲啊,你把我当成谁了啊?
作者: 熄灭的烟    时间: 2017-7-27 20:21
nttwqz 发表于 2017-7-27 10:47
你这还注册个马甲


你的昵称好面熟的感觉。不知道我们是否认识。
作者: guyue2011    时间: 2017-7-27 20:43


  1. @echo off
  2. ::要运行程序的绝对路径
  3. set program=C:\test.exe
  4. ::配置文件的搜索路径, 注意不必加上盘符
  5. set path=:\123\test.ini
  6. ::要搜索的盘符列表, 空格隔开
  7. set list=A B C D E F G H I J K L M N O P Q R S T U V W S Y Z
  8. :: 搜索到的配置文件路径 (程序自动设置)
  9. set target=

  10. for %%j in (%list%) do (
  11.   if exist "%%j%path%" (
  12.                 set target=%%j%path%
  13.    )
  14. )

  15. if "%target%"=="" (
  16.         %program%
  17. ) else (
  18.         %program% "%target%"
  19. )

复制代码

作者: 熄灭的烟    时间: 2017-7-27 20:54
本帖最后由 熄灭的烟 于 2017-7-27 20:55 编辑
nttwqz 发表于 2017-7-27 10:47
你这还注册个马甲


代码有用,不过缺点就是执行完后CMD窗口一直停留,必须退出程序后CMD窗口才会退出。怎样做到代码执行后自动退出,不必等到程序退出后才退出CMD窗口?
作者: 熄灭的烟    时间: 2017-7-27 22:44
guyue2011 发表于 2017-7-27 20:43

你的代码也OK,但跟上面的有同样的问题。就是执行完后CMD窗口一直停留,必须退出程序后CMD窗口才会退出。怎样做到代码执行后自动退出,不必等到程序退出后才退出CMD窗口?
作者: kingshui    时间: 2017-7-27 23:27
熄灭的烟 发表于 2017-7-27 22:44
你的代码也OK,但跟上面的有同样的问题。就是执行完后CMD窗口一直停留,必须退出程序后CMD窗口才会退出。 ...

加上exit /b
作者: guyue2011    时间: 2017-7-27 23:48

  1. @echo off
  2. ::要运行程序的绝对路径
  3. set program=C:\test.exe
  4. ::配置文件的搜索路径, 注意不必加上盘符
  5. set path=:\123\test.ini
  6. ::要搜索的盘符列表, 空格隔开
  7. set list=A B C D E F G H I J K L M N O P Q R S T U V W S Y Z
  8. :: 搜索到的配置文件路径 (程序自动设置)
  9. set target=

  10. for %%j in (%list%) do (
  11.   if exist "%%j%path%" (
  12.         set target=%%j%path%
  13.    )
  14. )

  15. if "%target%"=="" (
  16.         start "" "%program%"
  17. ) else (
  18.         start "" "%program%" "%target%"
  19. )
  20. goto :eof
复制代码

作者: nttwqz    时间: 2017-7-28 09:12
熄灭的烟 发表于 2017-7-27 20:54
代码有用,不过缺点就是执行完后CMD窗口一直停留,必须退出程序后CMD窗口才会退出。怎样做到代码执行后 ...

去掉/wait参数




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3