<pre class="c" name="code">
for /f "EOL=. delims=SZ tokens=2 skip=2" %i in ('REG Query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /f "ProductName"') do echo %i
這個前面空格無法去除殘念
<pre class="c" name="code">
for /f "delims== tokens=2 skip=1" %i in ('wmic os get Caption /value') do echo %i
這個效果比較好前面不會有空格
我使用在Win XP / WIN7 / WIn8
<pre class="c" name="code">for /f "delims== tokens=2 skip=1" %%i in ('wmic os get Caption /value') do echo %%i
結果最前面都會少一個M
icrosoft Windows XP Professional
不知是哪邊錯了....>_<
wayne988提到:
結果最前面都會少一個M
ECHO 看得到M出來的結果卻沒有!!
那只好在ECHO 加上.讓它前面多顯示一個NUL來避開M不見的情形
如果是用 SET 的話會有M
ECHO. %%i
wayne988提到:
不知是哪邊錯了....>_<
將COPY到批次檔 ECHO %%i 後方的空白去除也可以正常顯示,原因不明!!
試試看
<pre class="c" name="code">
for /f "delims=" %%F in ('REG Query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion" ^| find "ProductName"') do set osname=%%F
echo %osname:~29%
謝謝大大回覆,這個執行結果似乎還是把所有值都抓出來了...@_@
我執行的結果如下
最後 echo 出來的不是你要的答案嗎
<pre class="c" name="code">
C:\Users\HomeAcer>for /F "delims=" %F in ('REG Query "HKEY_LOCAL_MACHINE\SOFTWAR
E\Microsoft\Windows NT\CurrentVersion" | find "ProductName"') do set osname=%F
C:\Users\HomeAcer>set osname= ProductName REG_SZ Windows 7 Home Premium
C:\Users\HomeAcer>echo Windows 7 Home Premium
Windows 7 Home Premium
C:\Users\HomeAcer>
echo %osname:~29%
可能少了這個
剛剛試了一下,當在Windows XP環境下
<pre class="c" name="code">@echo off
for /f "delims=" %%F in ('REG Query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion" ^| find "ProductName"') do set osname=%%F
echo %osname:~29%
echo on
跑出來的結果是
oft Windows XP
那個 %osname:~29% 的 29 表示「從第29個字開始切字串」
如果照你的 XP
就把原來的
<pre class="c" name="code">%osname:~29%
改成
<pre class="c" name="code">%osname:~23%
試試看囉