| 
 
XZ 
初级用户
 
  
 
  
  
积分 144 
发帖 65 
注册 2008-3-20 来自 Taiwan 
状态 离线
 | 
『楼 主』:
 [求助]請reg 搭配ERRORLEVEL使用
 
使用 LLM 解释/回答一下
  
請問 reg 可不可以搭配ERRORLEVEL使用 
或是用其他的方式可以達到需求
 
目的: 當REGISTER值存在時執行若數值不存在時則跳出
  
for /f "skip=4 tokens=3 delims=	" %%i in ('reg query HKCU\Software\Microsoft\Office\11.0\Outlook\Security /v "OutlookSecureTempFolder"') do (set OSTF=%%i) 
if errorlevel 0 goto LU 
 
echo Your Outlook Secure TempFolder Path is: 
echo "%OSTF%" 
echo. 
goto end 
 
:LU 
echo by~~ 
goto end 
 
:end 
 
  
 
    
 
  
 |   
 | 
  2009-2-5 17:24 | 
  
 | 
 | 
 
yishanju 
银牌会员
 
      [b]看你妹啊[/b]
  
 
积分 1488 
发帖 1357 
注册 2006-5-20 
状态 离线
 | 
 | 
  2009-2-5 17:43 | 
  
 | 
 | 
 
XZ 
初级用户
 
  
 
  
  
积分 144 
发帖 65 
注册 2008-3-20 来自 Taiwan 
状态 离线
 | 
『第 3 楼』:
 
 
使用 LLM 解释/回答一下
  
Originally posted by yishanju at 2009-2-5 05:43 PM: 
if %%i 为空 退出 
这样不行么  
這位長官..我不確定行不行耶^^" 
因為這個指令我不會用阿 
SORRY~~ =    =
 
可否來個範例謝謝^^  
 
    
 
  
 |   
 | 
  2009-2-5 18:07 | 
  
 | 
 | 
 
yishanju 
银牌会员
 
      [b]看你妹啊[/b]
  
 
积分 1488 
发帖 1357 
注册 2006-5-20 
状态 离线
 | 
 | 
  2009-2-5 18:14 | 
  
 | 
 | 
 
XZ 
初级用户
 
  
 
  
  
积分 144 
发帖 65 
注册 2008-3-20 来自 Taiwan 
状态 离线
 | 
『第 5 楼』:
 
 
使用 LLM 解释/回答一下
  
Originally posted by yishanju at 2009-2-5 06:14 PM: 
if /? 就有啊  
Sir if搭配我還不太會用 
說明書有看了 只是我不太清楚REG回傳的ERRORLEVEL數值有哪些!! ^^
  
在批次檔中執行條件處理。 
 
IF  ERRORLEVEL number command 
IF  string1==string2 command 
IF  EXIST filename command 
 
  NOT               表示 Windows 應該只有在條件為偽時才執行命令。 
 
  ERRORLEVEL number 當上一個執行的程式傳回的結束碼大於或等於指定 
                    數字時,則條件為真。 
 
  string1==string2  當指定的文字字串相符合時,則條件為真。 
 
  EXIST filename    如果指定的檔名存在時,則條件為真。 
 
  command           指定當條件為真時所要執行的命令。命令之後可以 
                    接著 ELSE 命令。當指定條件為偽時,緊接在 ELSE 
                    命令之後的命令將會被執行。 
 
ELSE 子句必須出現在 IF 之後的同一行。例如: 
 
    IF EXIST filename. ( 
        del filename. 
    ) ELSE ( 
        echo filename. missing. 
    ) 
 
以下命令無法作用,因為 del 命令必須以換行字元來結尾: 
 
    IF EXIST filename. del filename. ELSE echo filename. missing 
 
下面命令也無法作用,因為 ELSE 命令必須在與 IF 命令同一行的結尾: 
 
    IF EXIST filename. del filename. 
    ELSE echo filename. missing 
 
下面命令只有在寫成一行時才能作用: 
 
    IF EXIST filename. (del filename.) ELSE echo filename. missing 
 
如果您啟用擴充命令,IF 的變更如下: 
 
    IF  string1 compare-op string2 命令 
    IF CMDEXTVERSION 數字命令 
    IF DEFINED 變數命令 
 
compare-op 可以是: 
 
    EQU - 等於 
    NEQ - 不等於 
    LSS - 小於 
    LEQ - 小於或等於 
    GTR - 大於 
    GEQ - 大於或等於 
 
而如果指定 /I 參數,則執行區分大小寫的字串比對。此 /I 參數也可使用 
string1==string2 格式於 IF 命令。這些比對是通用的,因為在比對中,如 
果 string1 及 string2 兩者皆由十進位數字所構成,則字串將會轉換為數 
字,並執行數字的比對。 
 
CMDEXTVERSION 條件式的運作和 ERRORLEVEL 一樣,除非它和與擴充命令相 
關的內部版本編號作比對。第一個版本為 1。若擴充命令大幅度地增強時就 
再加 1。當擴充命令停用時,CMDEXTVERSION 條件式永遠不為真。 
 
DEFINED 條件式的運作和 EXISTS 一樣,除非它帶有環境變數名稱,如果環 
境變數已定義則傳回 true 值。 
 
%ERRORLEVEL% 將擴充到代表目前 ERRORLEVEL 變數的一個字串,前提是已 
經沒有名為 ERRORLEVEL 的環境變數,在這個情況下,您會得到它的值。使 
用此值和上面的數字比對運算元,您可以作下列的選擇: 
 
    goto answer %ERRORLEVEL% 
    :answer0 
    提示您鍵入 Y 加以確定 
    :answer1 
    提示您鍵入N 加以否定 
 
您也可使用上面的數字比對: 
 
    IF %ERRORLEVEL% LEQ 1 goto okay 
 
%CMDCMDLINE% 將擴充到比 CMD.EXE 的任何處理程序更早傳給 CMD.EXE 的 
原始命令列,前提是已經沒有名為 CMDCMDLINE 的環境變數,在這個情形下, 
您會得到它的值。 
 
%CMDEXTVERSION% 將擴充成一個表示目前 CMDEXTVERSION 值的字串, 
表示沒有名為 CMDEXTVERSION 的環境變數。這種情況下您將會得到它的值。 
 
  
 
    
 
  
 |   
 | 
  2009-2-9 12:02 | 
  
 | 
 | 
 
wxcute 
中级用户
 
   
 
  
  
积分 458 
发帖 211 
注册 2006-7-26 
状态 离线
 | 
『第 6 楼』:
 用存在的、不存在的、禁止访问的项或值来测试。
 
使用 LLM 解释/回答一下
  
reg query "键项" [/v "值"] 
echo %errorlevel% 
 
    
 
  
  |  
                  
  
                    ┌───────┐ 
├→学习→实践→┤ 
└───────┘ |   
 | 
  2009-2-9 13:33 | 
  
 | 
 | 
 
XZ 
初级用户
 
  
 
  
  
积分 144 
发帖 65 
注册 2008-3-20 来自 Taiwan 
状态 离线
 | 
『第 7 楼』:
 
 
使用 LLM 解释/回答一下
  
Originally posted by wxcute at 2009-2-9 01:33 PM: 
reg query "键项"  
echo %errorlevel%  
您好  
我测试过您说的方式了 
不管数值有没有存在 
所得到的 ERRORLEVEL数值皆为 0 
所以好像这样行不通耶 
请问有别的方式吗? 
谢谢
  
cd\ 
cls 
for /f "skip=4 tokens=3 delims=	" %%i in ('reg query "HKCU\Software\Microsoft\Office\11.0\Outlook\Security" /v "OutlookSecureTempFolder"') do (set OSTF=%%i) 
echo %errorlevel%  
pause 
 
 
 
C:\>for /F "skip=4 tokens=3 delims=     " %i in ('reg query "HKCU\Software\Micro 
soft\Office\11.0\Outlook\Security" /v "OutlookSecureTempFolder"') do (set OSTF=% 
i ) 
 
錯誤:  系統找不到指定的登錄機碼或值 
 
C:\>echo 0 
0 
 
C:\>pause 
請按任意鍵繼續 . . . 
 
 
 
C:\>for /F "skip=4 tokens=3 delims=     " %i in ('reg query "HKCU\Software\Micro 
soft\Office\11.0\Outlook\Security" /v "OutlookSecureTempFolder"') do (set OSTF=% 
i ) 
 
C:\>(set OSTF=C:\Documents and Settings\VM\Local Settings\Temporary Internet Fil 
es\OLK64\ ) 
 
C:\>echo 0 
0 
 
C:\>pause 
請按任意鍵繼續 . . . 
  
 
    
 
  
 |   
 | 
  2009-2-13 14:47 | 
  
 | 
 | 
 
XZ 
初级用户
 
  
 
  
  
积分 144 
发帖 65 
注册 2008-3-20 来自 Taiwan 
状态 离线
 | 
『第 8 楼』:
 
 
使用 LLM 解释/回答一下
  
在FOR 裡面的不能判斷可能是我FOR的方式寫錯了吧ˇˇ 
因為不在FOR底下是可以的
 
內容
  
reg query "HKCU\Software\Microsoft\Office\11.0\Outlook\Security" /v "OutlookSecureTempFolder" >nul 
echo %errorlevel%  
 
reg query "HKCU\Software\Microsoft\Office\11.0\Outlook\Security" /v "Outlook" >nul 
echo %errorlevel%  
 
pause 
 
結果
  
C:\>reg query "HKCU\Software\Microsoft\Office\11.0\Outlook\Security" /v "Outlook 
SecureTempFolder"  1>nul 
 
C:\>echo 0 
0 
 
C:\>reg query "HKCU\Software\Microsoft\Office\11.0\Outlook\Security" /v "Outlook 
"  1>nul 
 
錯誤:  系統找不到指定的登錄機碼或值 
 
C:\>echo 1 
1 
 
C:\>pause 
請按任意鍵繼續 . . . 
 
請問有人可以協助一下修改嗎? 
謝謝!! 
目的: 當REGISTER值存在時執行若數值不存在時則跳出,若數值存在須將該數值設成一變數提供後續與法使用  
 
    
 
  
 |   
 | 
  2009-2-16 15:43 | 
  
 | 
 | 
 
zhengqian529 
初级用户
 
  
 
  
  
积分 100 
发帖 93 
注册 2009-1-14 来自 湖南 
状态 离线
 | 
『第 9 楼』:
 
 
使用 LLM 解释/回答一下
  
errorlevel 这个值是系统返回的,你要不自己设置一个error变量: 
1. 存在时,set error=1 
2. 不存在时,set error=0 
然后后面紧接你要执行的操作,不一定要纠结在%errorlevel%这个系统给定的变量 
 
    
 
  
 |   
 | 
  2009-2-16 15:48 | 
  
 | 
 | 
 
XZ 
初级用户
 
  
 
  
  
积分 144 
发帖 65 
注册 2008-3-20 来自 Taiwan 
状态 离线
 | 
『第 10 楼』:
 
 
使用 LLM 解释/回答一下
  
Originally posted by zhengqian529 at 2009-2-16 03:48 PM: 
errorlevel 这个值是系统返回的,你要不自己设置一个error变量: 
1. 存在时,set error=1 
2. 不存在时,set error=0 
然后后面紧接你要执行的操作,不一定要纠结在%errorlevel%这个系统给定的变量  
恩 謝謝您!! 
目前遇到另一個問題
  
@echo off 
reg query "HKCU\Software\Microsoft\Office\11.0\Outlook\Security" /v "OutlookSecureTempFolder" >nul 
if %errorlevel% EQU 0 ( 
 
for /f "skip=4 tokens=3 delims=	" %%i in ('reg query HKCU\Software\Microsoft\Office\11.0\Outlook\Security /v "OutlookSecureTempFolder"') do (set OSTF=%%i) 
 
echo Your Outlook Secure TempFolder Path is: 
echo "%OSTF%" 
echo. 
) ELSE ( 
echo Bye!! 
) 
pause 
 
只要多了
  reg query "HKCU\Software\Microsoft\Office\11.0\Outlook\Security" /v "OutlookSecureTempFolder" >nul 
if %errorlevel% EQU 0 (
這兩行 就無法偵測出路徑的數值 
結果如下
 
有 
reg query "HKCU\Software\Microsoft\Office\11.0\Outlook\Security" /v "OutlookSecureTempFolder" >nul 
if %errorlevel% EQU 0 ( 
結果
  
Your Outlook Secure TempFolder Path is: 
"" 
 
請按任意鍵繼續 . . . 
 
將 
reg query "HKCU\Software\Microsoft\Office\11.0\Outlook\Security" /v "OutlookSecureTempFolder" >nul 
if %errorlevel% EQU 0 ( 
加上REM 
結果
  
Your Outlook Secure TempFolder Path is: 
"C:\Documents and Settings\VM\Local Settings\Temporary Internet Files\OLK64\" 
 
Bye!! 
請按任意鍵繼續 . . . 
  
 
    
 
  
 |   
 | 
  2009-2-16 17:31 | 
  
 | 
 | 
 
XZ 
初级用户
 
  
 
  
  
积分 144 
发帖 65 
注册 2008-3-20 来自 Taiwan 
状态 离线
 | 
『第 11 楼』:
 
 
使用 LLM 解释/回答一下
  
找不出原因.. 
只好改寫成下面這樣 
暫時解決
  
@echo off 
reg query "HKCU\Software\Microsoft\Office\11.0\Outlook\Security" /v "OutlookSecureTempFolder" >nul 2>nul 
set OOS=%errorlevel% 
for /f "skip=4 tokens=3 delims=	" %%i in ('reg query HKCU\Software\Microsoft\Office\11.0\Outlook\Security /v "OutlookSecureTempFolder" 2^>nul') do (set OSTF=%%i) 
 
if %OOS% EQU 0 ( 
echo. 
echo Your Outlook Secure TempFolder Path is: 
echo "%OSTF%" 
echo. 
) ELSE ( 
echo. 
echo Bye!! 
echo. 
) 
pause 
  
 
    
 
  
 |   
 | 
  2009-2-18 16:44 | 
  
 |