无忧启动论坛

标题: 怎样用类似 Windows 10 Pro 赋给%%a 不要前面空格 [打印本页]

作者: 2012雨晨绿软    时间: 2017-3-10 12:35
标题: 怎样用类似 Windows 10 Pro 赋给%%a 不要前面空格
本帖最后由 2012雨晨绿软 于 2017-3-10 15:01 编辑

for /f "skip=2 tokens=2 delims=REG_SZ    " %%a in ('reg QUERY "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v "ProductName"') do set OOS=%%a
echo %OOS%

结果:“   Windows 10 Pro”  如何得到“Windows 10 Pro”而不要前面的空格呢? 不要set OOS=%%a %%b %%c这样的
因为:“   Windows 10 Pro” 可能是“   Windows Server 2016 Datacenter”



下为reg QUERY中一个例子
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion
    ProductName    REG_SZ    Windows 10 Pro

搞定了

for /f "skip=2 delims=" %%a in ('reg QUERY "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v "ProductName"') do set OOS=%%a
set OOS=%OOS:~29%
echo %OOS%
pause
作者: slore    时间: 2017-3-10 13:03
第一: delims=REG_SZ 是错误的用法,这样是按照,R,E,G,_,S,Z, 各个字符分割,如果有以上字符就会错误,比如Server的S。

第二:
not good, but work

  1. @echo off
  2. for /f "skip=2 delims=" %%a in ('reg QUERY "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v "ProductName"') do (
  3. call :GETPN %%a
  4. )
  5. echo %OOS%

  6. pause
  7. goto:EOF

  8. :GETPN
  9. set OOS=%3
  10. :SHIFT_PARAM
  11. shift
  12. if "%3"=="" goto :EOF
  13. call set OOS=%OOS% %3
  14. goto :SHIFT_PARAM
复制代码

作者: 2012雨晨绿软    时间: 2017-3-10 13:12
slore 发表于 2017-3-10 13:03
第一: delims=REG_SZ 是错误的用法,这样是按照,R,E,G,_,S,Z, 各个字符分割,如果有以上字符就会错误,比如 ...

SEVER系统会出错吗?我还没测试,当前是专业版没发现异常,给你评分、等我再测试下如果出错,谢谢热心,另外能不能再简洁些呢?
作者: 2012雨晨绿软    时间: 2017-3-10 13:23
slore 发表于 2017-3-10 13:03
第一: delims=REG_SZ 是错误的用法,这样是按照,R,E,G,_,S,Z, 各个字符分割,如果有以上字符就会错误,比如 ...

已经测试是只显示windows 没了
但你的代码再精简些就好了 我是要加入长批中用的
作者: slore    时间: 2017-3-10 14:26
2012雨晨绿软 发表于 2017-3-10 13:23
已经测试是只显示windows 没了
但你的代码再精简些就好了 我是要加入长批中用的

@echo off
for /f "skip=2 delims=" %%a in ('reg QUERY "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v "ProductName"') do (
set OOS=%%a
)
set OOS=%OOS:~29%
echo %OOS%

作者: slore    时间: 2017-3-10 15:01
2012雨晨绿软 发表于 2017-3-10 13:23
已经测试是只显示windows 没了
但你的代码再精简些就好了 我是要加入长批中用的

名字和类型是固定的话,直接在8截断空格就行了。

  1. @echo off
  2. for /f "skip=2 delims=" %%a in ('reg QUERY "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v "ProductName"') do (
  3. set OOS=%%a
  4. )
  5. set OOS=%OOS:~29%
  6. echo %OOS%
复制代码

作者: 2012雨晨绿软    时间: 2017-3-10 15:04
本帖最后由 2012雨晨绿软 于 2017-3-10 15:06 编辑
slore 发表于 2017-3-10 15:01
名字和类型是固定的话,直接在8截断空格就行了。

非常感谢,我也是一急只想先分列再截取了 其实只需要从左向右截取就行了




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