无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 3984|回复: 6
打印 上一主题 下一主题

[已解决] 怎样用类似 Windows 10 Pro 赋给%%a 不要前面空格

[复制链接]
跳转到指定楼层
1#
发表于 2017-3-10 12:35:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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
推荐
发表于 2017-3-10 14:26:53 | 只看该作者
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%
回复

使用道具 举报

推荐
发表于 2017-3-10 13:03:15 | 只看该作者
第一: 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
复制代码

点评

已经测试是只显示windows 没了 但你的代码再精简些就好了 我是要加入长批中用的  详情 回复 发表于 2017-3-10 13:23
SEVER系统会出错吗?我还没测试,当前是专业版没发现异常,给你评分、等我再测试下如果出错,谢谢热心,另外能不能再简洁些呢?  详情 回复 发表于 2017-3-10 13:12

评分

参与人数 1无忧币 +5 收起 理由
2012雨晨绿软 + 5 热心助人

查看全部评分

回复

使用道具 举报

3#
 楼主| 发表于 2017-3-10 13:12:24 | 只看该作者
slore 发表于 2017-3-10 13:03
第一: delims=REG_SZ 是错误的用法,这样是按照,R,E,G,_,S,Z, 各个字符分割,如果有以上字符就会错误,比如 ...

SEVER系统会出错吗?我还没测试,当前是专业版没发现异常,给你评分、等我再测试下如果出错,谢谢热心,另外能不能再简洁些呢?
回复

使用道具 举报

4#
 楼主| 发表于 2017-3-10 13:23:16 | 只看该作者
slore 发表于 2017-3-10 13:03
第一: delims=REG_SZ 是错误的用法,这样是按照,R,E,G,_,S,Z, 各个字符分割,如果有以上字符就会错误,比如 ...

已经测试是只显示windows 没了
但你的代码再精简些就好了 我是要加入长批中用的

点评

名字和类型是固定的话,直接在8截断空格就行了。  详情 回复 发表于 2017-3-10 15:01
@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%  详情 回复 发表于 2017-3-10 14:26
回复

使用道具 举报

6#
发表于 2017-3-10 15:01:31 | 只看该作者
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%
复制代码

点评

非常感谢,我也是一急只想先分列再截取了  详情 回复 发表于 2017-3-10 15:04
回复

使用道具 举报

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

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

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-30 19:41

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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