level 1
vszya
楼主
@echo off
setlocal enabledelayedexpansion
for /f "skip=1" %%a in ('wmic LogicalDisk where "DriveType='2'" get DeviceID') do (
set /a n+=1
set d!n!=%%a
)
set /a m=n-1
for /l %%a in (%m%,-1,1) do (
for /f "delims=" %%b in ('dir /a-d /s /b !d%%a!\vszy.ini') do (
if exist "%%b" (
for /f "tokens=1-2 delims==" %%c in (%%b) do (
if "%%c"=="ITEM1" start /wait "" "%%~dpb%%d"
)
goto :eof
)
)
)
这个批处理可以自动查找U盘里给定的INI文件,并读取里面给定段的值,然后执行。假如ini在U盘SOFT目录,内容如下:
[Common]
ITEM1=Win7_Service.exe
最终结果是start /wait U:\SOFT\Win7_Service.exe
我想改进地方就是不论有多少个ITEM值,批处理都会一次等待执行这些EXE。如:
[Common]
ITEM1=Win7_Service.exe
ITEM2=QQ.exe
ITEM3=RAR.exe
就会先运行Win7_Service.exe等待完成运行QQ.exe......
当然不是
if "%%c"=="ITEM1" start /wait "" "%%~dpb%%d"
if "%%c"=="ITEM2" start /wait "" "%%~dpb%%d"
........
这样来实现。
我的意思是以后只要修改INI文件里的ITEM数量就可控制运行多少程序,而不是修改bat
望有经验的朋友帮忙看看,先谢了
2016年03月18日 23点03分
1
setlocal enabledelayedexpansion
for /f "skip=1" %%a in ('wmic LogicalDisk where "DriveType='2'" get DeviceID') do (
set /a n+=1
set d!n!=%%a
)
set /a m=n-1
for /l %%a in (%m%,-1,1) do (
for /f "delims=" %%b in ('dir /a-d /s /b !d%%a!\vszy.ini') do (
if exist "%%b" (
for /f "tokens=1-2 delims==" %%c in (%%b) do (
if "%%c"=="ITEM1" start /wait "" "%%~dpb%%d"
)
goto :eof
)
)
)
这个批处理可以自动查找U盘里给定的INI文件,并读取里面给定段的值,然后执行。假如ini在U盘SOFT目录,内容如下:
[Common]
ITEM1=Win7_Service.exe
最终结果是start /wait U:\SOFT\Win7_Service.exe
我想改进地方就是不论有多少个ITEM值,批处理都会一次等待执行这些EXE。如:
[Common]
ITEM1=Win7_Service.exe
ITEM2=QQ.exe
ITEM3=RAR.exe
就会先运行Win7_Service.exe等待完成运行QQ.exe......
当然不是
if "%%c"=="ITEM1" start /wait "" "%%~dpb%%d"
if "%%c"=="ITEM2" start /wait "" "%%~dpb%%d"
........
这样来实现。
我的意思是以后只要修改INI文件里的ITEM数量就可控制运行多少程序,而不是修改bat
望有经验的朋友帮忙看看,先谢了