2016-02-02 44 views
0

如何在windows批處理文件中寫入下面的unix命令。請幫忙。如何編寫相當於windows批處理的unix grep文件系統

我的需求是目前自由空間檢查shell腳本需要轉換爲windows批處理腳本。

我的shell腳本如下,它將檢查項目文件夾下的可用空間。

的腳本文件夾TMP執行,它會給居留制 「1」 或 「0」

cd /tmp 
freeSpace=`df /projects | grep -v 'Filesystem' |awk '{ print $4}'|sed 's/%//'` 
    if [ ${freeSpace} -ge 85 ];then 
echo "1" 
    else 
echo "0" 
fi 

感謝

+0

我的unix已生鏽;這樣的輸出是什麼樣的? – SomethingDark

+0

freeSpace ='df/projects | grep -v'Filesystem'| awk'{print $ 4}'| sed's /%//''if if [$ {freeSpace} -ge 85];然後 \t echo「1」 else \t echo「0」 fi輸出應該是0或1 – testprabhu

+0

有'GREP'和'AWK'的Windows端口和許多其他舊的基於Unix命令。 – Squashman

回答

1

首先,與

@echo off 
setlocal 

開始你的批處理腳本.. 。以防止顯示正在執行的命令,並將變量的範圍限制爲該正在運行的腳本。

接下來,要捕獲命令的輸出,請使用for /f。有關更多信息,請參閱cmd控制檯中的help for

有幾種方法可以檢查Windows中硬盤的可用空間。一種是使用wmic.exe執行wmi查詢。下面是捕獲的自由空間至可變的例子:

for /f "tokens=2 delims=," %%I in ('wmic logicaldisk where "name='c:'" get freespace^,size /format:csv') do set "freespace=%%I" 
echo %freespace% 

wmic捕獲是棘手的,因爲WMI數據在UCS-2的Little Endian編碼如果我記得正確。它與控制檯一起擰緊。這就是爲什麼查詢包含「大小」作爲一次性價值。

另一個-繁瑣以下方式來獲得的自由空間是從dir這樣捕獲輸出:

for /f "tokens=3" %%I in ('dir ^| find /i "bytes free"') do set "freespace=%%I" 
set "freespace=%freespace:,=%" 
echo %freespace% 

在第二個例子中,號碼包含逗號,這使得整數比較不可能沒有剝離的那些逗號。這就是%freespace:,=%所做的 - 它執行子字符串替換,不用替換,See this page更多的字符串操作技巧。

無論哪種方式,比較大小,做到這一點:

if %freespace% gtr 85 (
    echo 1 
) else (
    echo 0 
) 
+0

非常感謝您的詳細解釋 – testprabhu

0

訣竅在Windows是有所有你使用可用的工具。您使用grep,awk,seddf。除了awk之外,所有這些工具均可在UnxUtils for Windows之間免費獲得,這些免費的&開放源代碼集合是針對Windows編譯的類Unix程序。

下載UnxUtils和解壓方便的地方(如c:\ unxutils),然後添加它的bin文件的位置,該系統PATH環境變量,以便他們可以在腳本命令行&上使用。二進制位置是%unxutilsbase%\usr\local\wbin。對於awk,您可以使用Gawk for Windows。安裝說明類似,爲detailed here

安裝完成後,您應該能夠幾乎完全按照您的要求編寫Windows腳本文件

+1

非常感謝您的詳細解釋 – testprabhu

相關問題