2011-04-05 91 views
0

這是從Linux的代碼塊打算做什麼,以及如何以批處理文件格式編碼相同的事情做同樣的事情?將Linux代碼轉換爲批處理文件格式

create_db() { 

    echo -e "\nRe-creating database [$DB] . . .\n" 
    apps_id=`db2 list applications | grep $DB | cut -c25-30` 
    for i in $apps_id 
    do 
    db2 "force applications ($i)" 
    done 
    sleep 3 

    db2 drop db $DB 
    db2 create database $DB 

    cd $HOME_DIR 
    cd ../Db/bin 
    [ ! -d logs ] && (mkdir logs) 
    rm -f logs/* 

    db2 connect to $DB user $USER using $PASS 
+0

護理解釋什麼是批處理文件是什麼?你的意思是一個Windows cmd.exe批處理文件?如果是這樣,哪個版本的Windows?看看powershell以及 – sehe 2011-04-05 11:09:28

回答

1

此代碼試圖重新創建在由(1)首先列出所有到數據庫的活動連接的$DB變量指定DB2數據庫; (2)關閉所有這些連接; (3)擦除數據庫(4)重新創建數據庫(5),擦除將用戶$user連接到數據庫的所有日誌(6)。

Windows中的第一種方法是類似於此

:create_db 
setlocal enabledelayedexpansion 
ECHO Re-creating database %DB% 
FOR /F "tokens=3" %%A IN ('DB2 LIST APPLICATIONS FOR DATABASE %DB%') DO (
    SET APPHANDLE=%%A 
    if .!ID!==. (SET ID=!APPHANDLE!) ELSE (SET ID=!ID!,!APPHANDLE!) 
) 
DB2 FORCE APPLICATIONS(!ID!) 
SLEEP 3 
DB2 DROP DB %DB% 
DB2 CREATE DATABASE %DB% 
cd %HOMEPATH% 
cd ..\DB\BIN 
rd /S /Q LOGS 
md LOGS 
db2 connect to %DB% user %USER% using %PASS% 
endlocal 
goto :eof 

一些注意事項的東西,雖然。

GREP和CUT不是窗口中的標準命令。我用一個稍微不同的策略重新實現了代碼。仔細測試。

SLEEP不是Windows中的標準命令。一些實現和一些替代方案存在,研究你自己(例如在這裏),你會發現它們。

+0

這真是奇妙,我對linux和ms dos批處理編碼都很陌生。我有一個實習,我的主管要求我做一個大約150行的轉換......我從來沒有在Linux編碼,也沒有批處理文件格式編碼,但我可以只按照順序,瞭解需要做什麼,只是在谷歌的幫助下修改代碼。你的解釋確實有道理。很多意義,但我無法真正抓住這個概念,因爲它的linux代碼使用方法和批處理函數。如果你能幫我解決這個問題,我會很高興。我不能感謝喲。 – Selase 2011-04-05 11:19:16

0

我會使用cygwin bash(www.cygwin.com)並保留腳本。

有一個用於Windows MSYS以及,也許另一個最小的bash實現,但我個人更喜歡的cygwin在Windows