Board logo

标题: [注册表类] [已解决]批处理怎样读取包含空格的注册表值? [打印本页]

作者: adness    时间: 2013-3-22 22:14     标题: [已解决]批处理怎样读取包含空格的注册表值?

例如这样的注册表键值C:\Program Files (x86)\Canon\Canon MOV Encoder\H264EncLib
使用FOR /F "tokens=1-4" %%A IN ('REG QUERY %KEY_NAME% /v %VALUE_NAME% 2^>nul') DO
遇到空格就截断了

我现在使用的办法是(很笨笨的办法)
  1. FOR /f  "tokens=1-8" %%A IN ('REG QUERY %KEY_NAME% /v %VALUE_NAME% 2^>nul') DO (
  2.     set stra=%%A
  3.     set strb=%%B
  4.     set strc=%%C
  5.     set strd=%%D
  6.     set stre=%%E
  7.     set strf=%%F
  8.     set strg=%%G
  9.     set strh=%%h
  10.     set stri=%%I
  11.     set strj=%%J
  12.     set strk=%%K
  13. )
  14. echo %strc% %strd% %stre% %strf% %strg% %strh% %stri% %strj% %strk%
  15. pause
复制代码
现在两条路
1 写个循环判断是否为空 我表示鸭梨很大
2 写个文本处理从左查找第一个%字符,往右全部去掉,鸭梨更大

请高人指点感激不尽
作者: BAT-VBS    时间: 2013-3-22 23:09

以冒号做分隔符,取%%a的最后一个字符和%%b
作者: apang    时间: 2013-3-22 23:47

  1. setlocal enabledelayedexpansion
  2. FOR /f  "Delims=" %%A IN ('REG QUERY %KEY_NAME% /v %VALUE_NAME%^|find ":"') DO (
  3.    set "v=%%A"
  4.    set "v=!v:*reg_sz=!"
  5.    for /f "tokens=*" %%b in ("!v!") do echo,%%~fb
  6. )
复制代码

作者: CrLf    时间: 2013-3-23 19:06

想将整行囊括在一个参数变量中可以用 "delims=" 或 "tokens=*",具体视情况而定
作者: adness    时间: 2013-3-23 21:39

回复 3# apang


    你是我的神!
能加上注释吗 老大?
求指教~
作者: apang    时间: 2013-3-24 19:16

回复 5# adness


    能告诉我哪一句不明白吗,老大?
求指点。
作者: adness    时间: 2013-3-25 17:03

回复 6# apang


   set "v=%%M"
   set "v=!v:*reg_sz=!"
   for /f "tokens=*" %%d in ("!v!") do echo,%%~fd
请解释下这三句火星文的逻辑.... 越细越好....刚上手
很多不懂的
多谢!
作者: adness    时间: 2013-3-25 17:12

回复 6# apang

顺带请教下,
回显是 一个文件夹路径
如果要删除这个文件夹,我后面该怎么写?
作者: Batcher    时间: 2013-3-25 17:27

回复 7# adness


设置一个变量
删除某个字符串
获取文件/文件夹的完整路径

多看看教程就懂了,这种事情得慢慢来,急不得。
http://www.bathome.net/thread-14927-1-1.html
http://www.bathome.net/thread-2189-1-1.html
作者: Batcher    时间: 2013-3-25 17:28

回复 8# adness
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. FOR /f  "Delims=" %%A IN ('REG QUERY %KEY_NAME% /v %VALUE_NAME%^|find ":"') DO (
  4.     set "v=%%A"
  5.     set "v=!v:*reg_sz=!"
  6.     for /f "tokens=*" %%b in ("!v!") do (
  7.         if exist "%%~fb" (
  8.             rd /s /q "%%~fb"
  9.         )
  10.     )
  11. )
复制代码

作者: adness    时间: 2013-3-25 17:43

回复 10# Batcher


   感激涕零!
作者: BAT-VBS    时间: 2013-3-25 18:58

回复 11# adness


    问题解决后,请编辑顶楼帖子在标题前面注明[已解决],并给回答者加分。




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