求高手帮助改进一下。
bat吧
全部回复
仅看楼主
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
level 14
set "str=%%c"
if "!str:~0,4!"=="ITEM" start /wait "" "%%~dpb%%d"
放到最里层的for里面
度娘觉得代码很好吃
2016年03月19日 02点03分 4
谢谢兄弟,完美解决了。
2016年03月20日 09点03分
level 7
有嘛用?做cpa啊[惊讶]
2016年03月19日 07点03分 5
1