2016-11-28 2 views
0

배치 파일에 나오지도 명령을 사용합니다 :는 어떻게 다음 명령 쉘 스크립트를 작성했다

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"*는 Windows BATCH 파일이 아닌 Linux/Unix 용 bash 스크립트와 유사합니다. 아마도 당신은'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이 행마다 수행 할 문자열에서 연장 .ZIP를 renove하기
출력 :

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

관련 문제