2013-05-15 32 views
1

我再次,希望我可以使用bash,同時嘗試做一些windows批處理。什麼是這個Bash表達式的簡短窗口批量等價物?這個簡單的bash字符串操作的窗口是什麼?

$ var="EIPADDRESS=192.168.20.139"; IPAddress="${var##*=}" ; echo "IP: ${IPAddress}" 
IP: 192.168.20.139 

上面提到了包括字符串中「=」的最後一個實例在內的所有內容。

我想出的東西,第一n字符條,但我寧願不依賴知道字符串形式先驗:

set var="EIPADDRESS=192.168.20.139" 
set IPAdress=%var:~11% 
echo IP: %IPAddress% 

什麼解決方案提供,它必須與香草工作安裝Windows 7:請不要使用第三方工具。

+0

不要這麼快就放棄了,** **批量更強大的':-)'! – Endoro

回答

2

您可以在PowerShell中,它是安裝在香草Win7的安裝這樣做:

> $var = "EIPADDRESS=192.168.20.139" 
> $var -match "(\d{1,3}\.){3}\d{1,3}" 
> $ip = $Matches[0] 

也就是說,你將如何在命令提示符下運行。創建.ps1文件與此處所寫的內容非常相似。

+0

謝謝,不熟悉「PowerShell」(這讓我感到自豪)。將匹配範圍從長度更改爲正則表達式(類似於'([0-9] + \。){3} [0-9] +')是一件簡單的事情嗎? – Jamie

+0

@Jamie - 我不確定你[0-9] == \ d(\ d匹配一個數字)我將所需的長度設置爲1到3之間,因爲這是一個IP地址,它必須是至少有一位數字,不能超過三位,但我注意到在我的表達中有一個錯字,我打算把最初的一組寫成'(\ d {1,3} \。)',我會解決這個問題的。 – pstrjds

+0

呵呵,不熟悉'\ d'語法,後見之明非常明顯,謝謝 – Jamie

0

的PowerShell:

$var = "EIPADDRESS=192.168.20.139" 
$ipAddress = $var | select-string '(\d{1,3}\.){3}\d+' | foreach-object { 
    $_.Matches[0].Groups[0].Value 
} 
"IP is $ipAddress" 

比爾

2

試試這個(是的,純批量):

(for %i in (EIPADDRESS=192.168.20.139) do @echo %i)|more +1 
+1

哇,優雅,請原諒我的驚喜,變量賦值就像純粹的變量一樣 – Jamie

+1

@Endoro - 使用EIPADDRESS = 192.168.20.139作爲文件名與剝離=出,然後使用更多隻顯示第二個「文件」 –