Board logo

标题: 翔九天的叨难: for 语句综合挑战题 [打印本页]

作者: x9tiancmd    时间: 2010-7-10 19:23     标题: 翔九天的叨难: for 语句综合挑战题

本题,适应练习人群:   新手练习,   老手挑战,   高手创新.  宗师归隐题



          新手练习题:   

                      新手利用 for 语句,  reg query  提取XP系统中,  IE流览器缓存目录路径(Cache), 历史记录路径(History), nethood 路径(nethood), (recent) 的路径


                 提示:  提取IE流览器缓存目录的键值 命令为  reg query "HKCU\software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v Cache  




       老手挑战题:   
              将新手练习题IE流览器缓存目录路径(Cache), 历史记录路径(History), nethood 路径(nethood), (recent) 的路径,  用 reg query   一次性 将所有路径提取出来并显示出来

         高手创新题:

               满足 老手挑战题的要求的同时,  程序运行不得生成临时文件.

         宗师题:
                   满足 高手创新题的要求, 并且, 不得使用 setlocal enabledelayedexpansion

                   并且 只准是一条复合命令 (双for  , 三for 都行)    (显示路径可以独立写一条, 但提取路径代码只准是一条)

             归隐题:

                           写出两 个不同的批处理,  都能满足宗师题的要求

                         也就是说,把宗师题做两遍, 但两个批处理命令不得相同


                          (#-.-)/

                 
                  
      

[ 本帖最后由 x9tiancmd 于 2010-7-10 20:02 编辑 ]
作者: neorobin    时间: 2010-7-10 20:04

将代码中的▲替换成 Tab 字符
  1. @for /f "delims=▲ tokens=1,3*" %%a in (
  2.   'for %%i in ^(
  3.     Cache History NetHood Recent
  4.     ^) do @reg query "HKCU\software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders"^| find /i "%%i"'
  5.   ) do @echo %%a=%%b
  6. pause
复制代码
PS: 运行下列代码 输入 9 获取 TAB 字符到剪贴板
  1. @echo off
  2. set /p code=请输入ASCII码值:
  3. Mshta Vbscript:ClipboardData.Setdata("text",Chr(%code%))(Close)
  4. echo %code%
  5. echo 对应ASCII码值的字符已获取到剪贴板,任意键退出...
  6. start notepad.exe
  7. pause>nul
复制代码

作者: x9tiancmd    时间: 2010-7-10 20:20     标题: TO: 二楼, 评分 +5

neorobin  兄台:   您好,

                   您的代码 很有精练,  输出也满足, 一楼所说要求.       感谢您的作答,


           但是:  .( ̄▽ ̄@)  老手挑战题:   的红字, 明确的标出  

        " 用 reg query   一次性 将所有路径提取出来并显示出来"

           意思就是说, reg query   只能是一次性将所有路径提出来,  只运行一次,   而兄台 好像是一个目录运行一次.


             再次感谢您的作答.     欢迎再次参与  叨难 (#-.-)/ 
作者: neorobin    时间: 2010-7-10 21:20

将代码中的▲替换成 Tab 字符, 很无聊的做这个题
  1. @echo off
  2. for /f "delims=" %%l in ('reg query "HKCU\software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders"') do (
  3.   for /f "delims=▲ tokens=1-3*" %%a in ("%%l") do (
  4.   for %%x in (%%a_%%b) do echo Cache_reg_sz NetHood_reg_sz History_reg_sz Recent_reg_sz|find /i "%%x">nul && echo %%a=%%c
  5.   )
  6. )
  7. pause
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2