熄灭的烟 发表于 2017-7-26 12:00:19

批处理全盘搜索指定配置文件,并加载运行。求高手指教!!!

程序文件名: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:25

我写过一个现成的叫SWAI,自己搜...

nttwqz 发表于 2017-7-27 10:47:15

你这还注册个马甲

@echo off
pushd %~dp0
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 (
        if /i "%%~xi"==".exe" set "exefile=%%~i"
        if /i "%%~xi"==".ini" set "inifile=%%~i"
)
start /wait %exefile% %inifile%
pause

熄灭的烟 发表于 2017-7-27 20:02:10

nttwqz 发表于 2017-7-27 10:47
你这还注册个马甲

我不是谁的马甲啊,你把我当成谁了啊?

熄灭的烟 发表于 2017-7-27 20:21:24

nttwqz 发表于 2017-7-27 10:47
你这还注册个马甲

你的昵称好面熟的感觉。不知道我们是否认识。

guyue2011 发表于 2017-7-27 20:43:22



@echo off
::要运行程序的绝对路径
set program=C:\test.exe
::配置文件的搜索路径, 注意不必加上盘符
set path=:\123\test.ini
::要搜索的盘符列表, 空格隔开
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
:: 搜索到的配置文件路径 (程序自动设置)
set target=

for %%j in (%list%) do (
if exist "%%j%path%" (
                set target=%%j%path%
   )
)

if "%target%"=="" (
        %program%
) else (
        %program% "%target%"
)

熄灭的烟 发表于 2017-7-27 20:54:26

本帖最后由 熄灭的烟 于 2017-7-27 20:55 编辑

nttwqz 发表于 2017-7-27 10:47
你这还注册个马甲

代码有用,不过缺点就是执行完后CMD窗口一直停留,必须退出程序后CMD窗口才会退出。怎样做到代码执行后自动退出,不必等到程序退出后才退出CMD窗口?

熄灭的烟 发表于 2017-7-27 22:44:55

guyue2011 发表于 2017-7-27 20:43


你的代码也OK,但跟上面的有同样的问题。就是执行完后CMD窗口一直停留,必须退出程序后CMD窗口才会退出。怎样做到代码执行后自动退出,不必等到程序退出后才退出CMD窗口?

kingshui 发表于 2017-7-27 23:27:18

熄灭的烟 发表于 2017-7-27 22:44
你的代码也OK,但跟上面的有同样的问题。就是执行完后CMD窗口一直停留,必须退出程序后CMD窗口才会退出。 ...

加上exit /b

guyue2011 发表于 2017-7-27 23:48:12


@echo off
::要运行程序的绝对路径
set program=C:\test.exe
::配置文件的搜索路径, 注意不必加上盘符
set path=:\123\test.ini
::要搜索的盘符列表, 空格隔开
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
:: 搜索到的配置文件路径 (程序自动设置)
set target=

for %%j in (%list%) do (
if exist "%%j%path%" (
      set target=%%j%path%
   )
)

if "%target%"=="" (
      start "" "%program%"
) else (
      start "" "%program%" "%target%"
)
goto :eof

nttwqz 发表于 2017-7-28 09:12:49

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

去掉/wait参数
页: [1]
查看完整版本: 批处理全盘搜索指定配置文件,并加载运行。求高手指教!!!