无忧启动论坛

标题: 有关for命令的使用 [打印本页]

作者: 沙漠之子    时间: 2007-1-3 21:42
标题: 有关for命令的使用
for /f %1 in (    ) do regsvr32.exe /s %1

:list
DFRGSNAP.DLL
DFRGUI.DLL
DMDLGS.DLL
DMDSKMGR.DLL
DMOCX.DLL
FILEMGMT.DLL
MMCNDMGR.DLL
MMCSHEXT.DLL
MYCOMPUT.DLL
OLEACC.DLL
VSSAPI.DLL
DMVIEW.OCX
devmgr.dll

如何让for处理list段的信息
作者: sztopms1    时间: 2007-1-3 21:48
楼主乃高人,问的是?   

将:list段也放在bat文件中?

我知道的是将你list段的文件存成txt文件,把文件名放在in中。

如果一定要放在bat文件内,能否用find命令带%0参数去查找呢? 感觉应该可以,你试试吧:)
作者: bagpipe    时间: 2007-1-4 09:31
如果楼主确实要把内容放在一个P处理文件中可以用以下方案解决问题:

  1. @echo off
  2. for /f "delims=" %%i in ('more +4^<"%~n0%~x0"') do regsvr32.exe /s %%i
  3. goto :eof
  4. :list
  5. DFRGSNAP.DLL
  6. DFRGUI.DLL
  7. DMDLGS.DLL
  8. DMDSKMGR.DLL
  9. DMOCX.DLL
  10. FILEMGMT.DLL
  11. MMCNDMGR.DLL
  12. MMCSHEXT.DLL
  13. MYCOMPUT.DLL
  14. OLEACC.DLL
  15. VSSAPI.DLL
  16. DMVIEW.OCX
  17. devmgr.dll
复制代码

作者: ccwan    时间: 2007-1-4 15:46
学习了。
作者: 沙漠之子    时间: 2007-1-4 17:29
现在无忧牛人越来越多的说,谢谢bagpipe了
作者: 沙漠之子    时间: 2007-1-10 18:50
再次增加难度,

1.能否不使用外部命令(如more)
2.能否含多套列表
作者: 沙漠之子    时间: 2007-1-14 14:52
那位大大知道
作者: namejm    时间: 2007-1-14 15:23
  如果要区分内部命令和外部命令的话,就是纯DOS风格的代码了;纯DOS下的 for 不支持 /f 开关,没法提取。

  提取批处理文件内部的某个标签段,要么受行位置的限制,难以对代码进行更新;要么难以定位标签段的结尾;要么就会无法完美地处理特殊字符(如重定向符号、变量引用符号)。最好通过读取配置文件来实现。
作者: 沙漠之子    时间: 2007-2-3 14:47
原帖由 沙漠之子 于 2007-1-10 06:50 PM 发表
2.能否含多套列表

@echo off
for /f "delims=" %%i in ('more +4^<"%~n0%~x0"') do (
if "%%i"=="::listend" goto next
regsvr32.exe /s %%i
)

goto :eof
:list
DFRGSNAP.DLL
DFRGUI.DLL
DMDLGS.DLL
DMDSKMGR.DLL
DMOCX.DLL
FILEMGMT.DLL
MMCNDMGR.DLL
MMCSHEXT.DLL
MYCOMPUT.DLL
OLEACC.DLL
VSSAPI.DLL
DMVIEW.OCX
devmgr.dll
::listend




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