2016-12-16 45 views
1

我試圖創造了reg查詢結果看起來像這樣和作品只有REG存在創建txt文件

REG QUERY HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{C5E637C6-5AB6-426F-B638-7DC533AE5C75} /v InstallLocation > C:\file.txt 

但我想只創建txt文件,如果一個txt文件註冊查詢找到某事。

@echo off 
REG QUERY HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{C5E637C6-5AB6-426F-B638-7DC533AE5C75} /v InstallLocation 
IF ERRORLEVEL 0 > C:\file.txt 

我知道我做錯了。與上述,它確實創建.txt,但它是空白的。我希望它在這種情況下發布結果使INSTALLLOCATION

+0

而你的代碼....你爲什麼不用'PowerShell'來代替? – Hackerman

+0

我不知道powershell是多少 – Sam

回答

0
@echo off 
Set "Key=HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{C5E637C6-5AB6-426F-B638-7DC533AE5C75}" 
Set "Val=InstallLocation" 
Set "%Val%=" 
For /F "Tokens=1-2*" %%A in (
    'REG QUERY "%Key%" /v %Val% ^|Findstr /i "%Val%"' 
) Do Set %Val%=%%C 
IF Defind %Val% >C:\file.txt Call Echo:%%%Val%%% 

或者與

SetLocal EnableExtensions EnableDelayedExpansion 
IF Defind %Val% >C:\file.txt Echo:!%Val%! 
+0

運行腳本後,這對我並不適用。 – Sam

0

替換最後一行在命令提示符下:

For /F "Tokens=1,2*" %A In ('Reg Query "HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{C5E637C6-5AB6-426F-B638-7DC533AE5C75}" /V InstallLocation 2^>Nul') Do @If "%A"=="InstallLocation" >C:\file.txt Echo(%C 

在一個批處理文件:

@For /F "Tokens=1,2*" %%A In ('Reg Query^ 
"HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{C5E637C6-5AB6-426F-B638-7DC533AE5C75}"^ 
/V InstallLocation 2^>Nul') Do @If "%%A"=="InstallLocation" >C:\file.txt Echo(%%C 

只是要記住,通常普通用戶沒有寫入權限C:\

+0

這工作得很好!謝謝。我確實有一個問題。如果我要使用相同的批處理文件檢測到不同的版本,我可以使用相同的腳本,只需更改{C5E637C6-5AB6-426F-B638-7DC533AE5C75}或是否必須更改令牌名稱? – Sam

+0

對不起,對於延遲迴答,我沒有看到你的評論。是的,在大多數情況下,不應該按照您的指示更改名稱或GUID。 – Compo