我努力將一個註冊表項的值讀入一個變量。註冊表值可能會或可能不會包含空格。在這種情況下,我試圖查找SDK路徑。讀取一個註冊表值到一個批處理變量,處理值空間
很容易與reg query
獲得的價值,但它在一個非常無益的格式返回:
C:\Users\Administrator\Desktop>reg query "HKLM\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.1\WinSDKTools" /v InstallationFolder
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.1\WinSDKTools
InstallationFolder REG_SZ C:\Program Files\Microsoft SDKs\Windows\v7.1\bin\
鍵名,密鑰類型和密鑰值由一系列的空格,不製表符分隔。
你以爲你可以使用類似:
FOR /F "usebackq tokens=3* skip=2" %%L IN (
`reg query "HKLM\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.1\WinSDKTools" /v InstallationFolder`
) DO SET sdkpath=%%L
...但如果鍵包含空格,在這種情況下,在命令行上發出的結果是:
C:\Users\Administrator\Desktop>SET sdkpath=C:\Program
這是沒有用的。似乎沒有一個通配符變量來說「所有匹配」。你不能只是寫:
DO SET sdkpath=%%L %%M
...因爲如果有路徑不空間,這將產生一個文字%M
(也將產生一個空格)。
所以。有沒有辦法在批處理文件中做這個簡單的事情?
我已經在Powershell(和一些Perl)中編寫了大部分工具,但是我需要使用批處理文件來執行「簡單」任務call
,然後調用visual studio/windows sdk環境腳本,然後調用代碼一旦環境建立起來,就會以一種健康的語言出現。
你會認爲經過10多年的cmd.exe
的存在以及command.com
之前,這會很容易。幫幫我?
(我可以用Perl和Win32::
包查詢註冊表,但它不會幫我把它變成一個批處理變種...)
使用Win2k12。
我讀過:
和許多其他人,但沒有處理的正確讀取從鍵的值不知道是否該一般情況下不是它包含空格/多少。
哇。現在我討厭批處理文件比以前更多。但是謝謝你。 –