2016-11-28 35 views
0

我寫了一個shell腳本,用下面的命令使用sed命令:如何在批處理文件

if [[ $(echo $FILE_NAME | awk -F"_" '{print $3}') == "IMAGE" ]]; 
    then 
echo "in if of f_name" 
    F_NAME=`echo $FILE_NAME | sed 's/IMAGE/UCM/'` 
echo $F_NAME 
    else 
echo "in else of f_name" 
    F_NAME=`echo $FILE_NAME | sed 's/FUSION_CONFIGURATION_1/UCM/'` 
    fi 

此搜索這是參數,然後進入這個如果其他人,然後給結果的文件名。這個LOGIC如何在批處理文件中使用?

這是給在批處理文件

+0

由於沒有任何語法的是即使遠程關閉可以在批處理文件中運行的命令。如果你想知道命令的語法,你可以在bash提示符下做相同的事情並獲得命令的幫助。在這種情況下:'IF /?'如果要捕獲變量中的命令輸出,可以使用'FOR/F'命令。 – Squashman

+0

您的*「code」*看起來像Linux/Unix的bash腳本,而不是Windows BATCH文件。我想你應該刪除'batch-file'標籤並應用'bash'標籤。 –

回答

1

內部或外部錯誤這是我試着翻譯/解釋你的bash代碼來批。

@Echo off&SetLocal EnableExtensions EnableDelayedExpansion 
Set FILE_NAME=one_two_IMAGE_four 
:: Set FILE_NAME=one_two_FUSION_CONFIGURATION_1_four 

:: This replaces your awk 
For /f "tokens=3 Delims=_" %%A in (
'echo:%File_Name%' 
) Do Set Token3=%%A 

:: Variable content is refered to by enclosing the var name in % 
:: DelayedExpansion is neccessary because inside a (code block) 
:: You have to use the exclamation mark instead of the percent then 
If "%Token3%"=="IMAGE" (
    Set F_NAME=!FILE_NAME:IMAGE=UCM! 
) Else (
    Set F_NAME=!FILE_NAME:FUSION_CONFIGURATION_1=UCM! 
) 
Echo FILE_NAME=%FILE_NAME% 
Echo Token3 =%Token3% 
Echo F_NAME =%F_NAME% 

輸出

FILE_NAME=one_two_IMAGE_four 
Token3 =IMAGE 
F_NAME =one_two_UCM_four 

FILE_NAME=one_two_FUSION_CONFIGURATION_1_four 
Token3 =FUSION 
F_NAME =one_two_UCM_four 

EDIT
要renove從字符串延伸的.zip每行的內容將做:

Set F_NAME=%F_NAME:.zip=% 
For %%A in ("%F_NAME%") Do Set F_NAME=%%~nA 
Set F_NAME=%F_NAME:~0,-4% 
+0

是否包含'setlocal EnableDelayedExpansion'的行? – LotPings

+0

我想從F_NAME中刪除.zip,現在我的文件名就像one_two_IMAGE_four.zip。我想要我的輸出像one_two_IMAGE_four - 這可能嗎? –

+1

將此信息附加到我的答案中。 – LotPings