[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

例如这样的注册表键值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 写个文本处理从左查找第一个%字符,往右全部去掉,鸭梨更大

请高人指点感激不尽
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

以冒号做分隔符,取%%a的最后一个字符和%%b

TOP

  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

评分人数

TOP

想将整行囊括在一个参数变量中可以用 "delims=" 或 "tokens=*",具体视情况而定

TOP

回复 3# apang


    你是我的神!
能加上注释吗 老大?
求指教~

TOP

回复 5# adness


    能告诉我哪一句不明白吗,老大?
求指点。

TOP

回复 6# apang


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

TOP

回复 6# apang

顺带请教下,
回显是 一个文件夹路径
如果要删除这个文件夹,我后面该怎么写?

TOP

回复 7# adness


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

多看看教程就懂了,这种事情得慢慢来,急不得。
http://www.bathome.net/thread-14927-1-1.html
http://www.bathome.net/thread-2189-1-1.html
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 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. )
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 10# Batcher


   感激涕零!

TOP

回复 11# adness


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

TOP

返回列表