找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 36862|回复: 11

[注册表类] [已解决]批处理怎样读取包含空格的注册表值?

[复制链接]
发表于 2013-3-22 22:14:52 | 显示全部楼层 |阅读模式
例如这样的注册表键值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 写个文本处理从左查找第一个%字符,往右全部去掉,鸭梨更大

请高人指点感激不尽

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2013-3-22 23:09:59 | 显示全部楼层
以冒号做分隔符,取%%a的最后一个字符和%%b
发表于 2013-3-22 23:47:31 | 显示全部楼层

  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. )
复制代码

评分

参与人数 1技术 +1 收起 理由
adness + 1 技术精湛

查看全部评分

发表于 2013-3-23 19:06:24 | 显示全部楼层
想将整行囊括在一个参数变量中可以用 "delims=" 或 "tokens=*",具体视情况而定
 楼主| 发表于 2013-3-23 21:39:41 | 显示全部楼层
回复 3# apang


    你是我的神!
能加上注释吗 老大?
求指教~
发表于 2013-3-24 19:16:31 | 显示全部楼层
回复 5# adness


    能告诉我哪一句不明白吗,老大?
求指点。
 楼主| 发表于 2013-3-25 17:03:44 | 显示全部楼层
回复 6# apang


   set "v=%%M"
   set "v=!v:*reg_sz=!"
   for /f "tokens=*" %%d in ("!v!") do echo,%%~fd
请解释下这三句火星文的逻辑.... 越细越好....刚上手
很多不懂的
多谢!
 楼主| 发表于 2013-3-25 17:12:02 | 显示全部楼层
回复 6# apang

顺带请教下,
回显是 一个文件夹路径
如果要删除这个文件夹,我后面该怎么写?
发表于 2013-3-25 17:27:01 | 显示全部楼层
回复 7# adness


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

多看看教程就懂了,这种事情得慢慢来,急不得。
http://www.bathome.net/thread-14927-1-1.html
http://www.bathome.net/thread-2189-1-1.html
发表于 2013-3-25 17:28:47 | 显示全部楼层
回复 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. )
复制代码
 楼主| 发表于 2013-3-25 17:43:04 | 显示全部楼层
回复 10# Batcher


   感激涕零!
发表于 2013-3-25 18:58:56 | 显示全部楼层
回复 11# adness


    问题解决后,请编辑顶楼帖子在标题前面注明[已解决],并给回答者加分。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 02:56 , Processed in 0.013108 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表