2016-11-28 3 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 

Это искали FILENAME, который был параметр, а затем перейти в это, если еще и затем дать результат , Как этот LOGIC можно использовать в пакетном файле?

Это дает внутреннюю или внешнюю ошибку в пакетном файле

+0

Поскольку ни один из синтаксиса даже удаленно закрыть команды, которые вы можете запустить в пакетном файле. Если вы хотите знать синтаксис для команды, вы делаете то же самое, что и в командной строке bash, и получите помощь для команды. В этом случае: 'IF /?' Если вы хотите захватить вывод команды в переменной, вы должны использовать команду 'FOR/F'. – Squashman

+0

Ваш * "код" * выглядит как скрипт 'bash' для Linux/Unix, а не файл Windows BATCH. Я думаю, вы должны удалить тег 'batch-file' и применить тег' bash'. –

ответ

1

Это моя попытка перевести/интерпретировать код Баш к партии.

@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 не
Чтобы rénové расширение .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

Я хочу удалить .zip из F_NAME прямо сейчас мое имя файла похоже на one_two_IMAGE_four.zip. Я хочу, чтобы мой вывод понравился one_two_IMAGE_four. Возможно ли это? –

+1

Приложил эту информацию к моему ответу. – LotPings

Смежные вопросы