Ternary

首页  后退  前进

Ternary

down2

通常根据表达式的结果选择两个选项之一。

 

(expression) ? (expression1 if expression is True) : (expression2 if expression is False)

 

参数

expression

逻辑表达?表达式1:表达式2

注释:

操作算法如下:

  逻辑表达式被评估。

  如果逻辑表达式表达式为true,则表达式expression1被计算,否则表达式expression2。

  返回计算的值。

 

建议在括号中括起表达式.

 

比较运算符和逻辑运算符见附件

例子
copy

exect=$var_i1=5||$var_i2=5||$var_i3=$var_i1<>$var_i2?10:20 GLOBALEXECT<a> ;; 相对于条件(结果20,因为条件5 <> 5不为真)分配变量$var_i3一个值,

 

exect=$var_i1=5||$var_i2=5||$var_i3=$var_i1=$var_i2?10:20 GLOBALEXECT<a> ;;示例分配变量$var_i3相对于条件的值(结果10,因为条件5 = 5是真的)

 

exect=$var_i1=1||$var_i2=2||$var_i3=3||$var_i4=4||$var_i5=($var_i1=$var_i2~~And~~$var_i3=$var_i4)?10:20 GLOBALEXECT<a> ;; 为变量$var_i5分配一个值,相对于条件(结果20,因为条件1 = 2和3 = 4不是真的)

 

exect=$var_i1=1||$var_i2=2||$var_i3=3||$var_i4=4||$var_i5=($var_i1<>$var_i2~~And~~$var_i3<>$var_i4)?10:20 GLOBALEXECT<a> ;;示例分配变量$var_i5相对于条件(结果10,因为条件1 <> 2和3 <> 4为真)的值

 

exect=$var_i1=1||$var_i2=2||$var_i3=3||$var_i4=4||$var_i5=($var_i1=$var_i2~~Or~~$var_i3<>$var_i4)?10:20 GLOBALEXECT<a> ;; 示例分配变量$var_i5相对于条件(结果10,因为条件1 = 2,3 <> 4之一为真)的值

 

exect=$var_s0=ClipGet()||$var_s1=StringRegExp('$var_s0','(\d{1,4}x\d{1,4})')=0?'100x100':'$var_s0'||_ViewValues('$var_s1') ;; 如果剪贴板的内容不是0x0或00x00或000x000或0000x0000形式的字符串(其中可以是任何数字而不是零),则变量$var_s = 100x100

 

exect=$var_s1=StringRegExp(ClipGet(),'(\d{1,4}x\d{1,4})')=0?'100x100':ClipGet()||_ViewValues('$var_s1') ;; 如果剪贴板的内容不是0x0或00x00或000x000或0000x0000形式的字符串(其中可以是任何数字而不是零),则变量$var_s = 100x100

 

<FOR> 1 <TO> 5 exect=$var_sc=Mod(:INDEX:)=0?'blue-red':'red-blue'||_ViewValues('$var_sc') <NEXT> ;; 在循环中获取变量$var_sc与奇数/偶数计数器的不同值的示例

 

exect=$var_aa=StringSplit('AA|BB|CC|DD|EE|','|',1) <FOR> 1 <TO> 10 exect=$var_sc=Mod(:INDEX:,5)||$var_sc=$var_sc=0?5:$var_sc||$var_sc=GLOBALEXECT<$var_sc>||_ViewValues('$var_sc') <NEXT> ;; 在一个循环中替代使用数组值和$var_aa的示例

 

exect=$var_i1=[info=x10]||$var_i2=[info=x11]||$var_i3=($var_i1=0~~Or~~$var_i2=0)?_Exit():($var_i1>$var_i2?$var_i2:$var_i1) slist=[tc=AL] sends=[tc=TL]??-1 forpgs <FOR> 1 <TO> $var_i3 copyy=GLOBALSLIST<:INDEX:>||GLOBALSENDS<:INDEX:>//0 <NEXT> ;; 将所选文件逐个复制到对侧面板文件夹的相应选择顺序

 

sends=@<info=i1%P%N//>??1 sends=@<info=i2%P%N//>??2 sends=x!!3||##rndm<3|30>||#Hcrc32|1 exect=$var_its=(GLOBALSENDS<1>>GLOBALSENDS<2>?GLOBALSENDS<2>:GLOBALSENDS<1>)/2 exect=$var_obch=$var_its*2 start=Magick||%P%N||-resize||"$var_obch"x"$var_obch"!||-matte||-fill||none||-draw||"color~~0,0~~reset"||-fill||white||-draw||"circle~~$var_its,$var_its~~0,$var_its"||%TCIMG_TEMP%\temp.png||&&hide||&&wait start=Magick||%P%N||-matte||%TCIMG_TEMP%\temp.png||-compose||DstIn||-composite||"%pOut-GLOBALSENDS<3>".png||&&hide||&&wait||upd<1> tempxx ;;从光标中的图像创建活动面板中的圆形图像,并从中心捕获片段

exect=$var_i=##$INI<8!!%%COMMANDER_INI%%!!Configuration!!CopyComments>||$var_st=WinGetTitle('[ACTIVE]') tcimg=$cm516 buttn=TDLGCONFIGALL||+tcTCSBO22|$w|$h||+tcTCSBO27||+tcTCSBO24 exect=$var_s='Копирование~~Descript.ion~~'&($var_i=2?'ВКЛЮЧЕНО':'ОТКЛЮЧЕНО') pause=500 title=$var_s pause=5s title=$var_st ;; 启用/禁用复制描述。+显示标题中设置的当前状态

 

exect=$var_i=##$INI<8!!%%COMMANDER_INI%%!!Configuration!!CopyComments>||$var_st=WinGetTitle('[ACTIVE]')||$var_s='Копирование~~Descript.ion~~'&($var_i=10?'ВКЛЮЧЕНО':'ОТКЛЮЧЕНО') title=$var_s pause=5s title=$var_st ;; 显示标题中设置的当前状态

 

%Zexect=$var_i=##$INI<8!!%%COMMANDER_INI%%!!Configuration!!CopyComments> tcimg=$cm516 buttn=TDLGCONFIGALL||+tcTCSBO22|$w|$h||+tcTCSBO27||+tcTCSBO24 exect=$var_s=$var_i=2?'desc_red'&'.ico!!desc_gren'&'.ico':'desc_gren'&'.ico!!desc_red'&'.ico' textt=%%COMMANDER_PATH%%\BAR\000_TCIMG_Test.bar||$var_s||backup<0> barupd ;;切换复制描述的设置,更改活动面板按钮的图标(图标desc_gren.ico和desc_red.ico必须放在TC的根目录中)

 

exect=$var_handle=WinGetHandle('[CLASS:Notepad]')||$var_s=WinActive(Eval('var_handle'))?'активно':'не~~активно'||_ViewValues('$var_s') ;; 检查记事本窗口是否处于活动状态

 

exect=$var_handle=WinGetHandle('[CLASS:Notepad]')||$var_s=WinExists(Eval('var_handle'))?'существует':'не~~существует'||_ViewValues('$var_s') ;; 检查记事本窗口是否存在

 

exect=$var_istate=WinGetState('[CLASS:TTOTAL_CMD]')||$var_s=BitAND($var_istate,8)?'активно':'не~~активно'||_ViewValues('$var_s') ;; 确定活动或</ s> Total Commander窗口

 

exect=$var_s=ProcessExists('notepad.exe')?'запущен':'не~~запущен'||_ViewValues('$var_s') ;; 检查"记事本"进程是否正在运行

 

exect=$var_s=Not~~ClipGet()?_Exit():'''' ;; 如果剪贴板是空的,那么关机(可以在一系列命令之前插入来检查)

 

exect=$var_a=StringSplit('%%COMMANDER_PATH%%\Bar\000_TCIMG_Test.bar|%%COMMANDER_PATH%%\Bar\084_AU3.bar|%%COMMANDER_PATH%%\Bar\000_TCIMG_Test_Exe.bar','|')||$var_si=EnvGet('COMMANDER_PATH')&'\WinButtonBar.ini'||$var_sb=IniRead('$var_si','Buttonbar','Buttonbar','''')||$var_i=Number(_ArraySearch($var_a,'$var_sb')+1)||$var_i=($var_i>3~~Or~~$var_i=0)?1:$var_i||IniWrite('$var_si','Buttonbar','Buttonbar','$var_a[$var_i]')||IniWrite('$var_si','Buttonbar','Buttonbar',Execute('$var_a[$var_i]')) ;; 将WinButtonBar.ini中的一个圆圈中的3个预定义的.bar路径之一写入[Buttonbar]部分

 

exect=$var_a=PixelSearch(0,0,20,300,0xFF0000)||IsArray($var_a)?_ViewValues($var_a):_ViewValues('颜色~~не~~найден') ;; 获得红色颜色a的数组像素坐标

 

exect=Run('notepad.exe')||$var_h=WinWait('[CLASS:Notepad]','''',5)||SendKeepActive(HWnd($var_h)) <FOR> 1 <TO> 10 exect=Send('Hello')||Sleep(500) <NEXT> exect=SendKeepActive('''')||WinClose(HWnd($var_h)) ;; 使用Send()函数运行记事本并保持记事本窗口处于活动状态

 

exect=Run('notepad.exe')||$var_h=WinWait('[CLASS:Notepad]','''',5)||IsHWnd(Eval('var_h'))?_ViewValues('Это~~дескриптор~~HWND'):_ViewValues('Это~~НЕ~~дескриптор~~HWND') ;; 运行记事本和检查窗口句柄的有效性

 

exect=$var_s=FileSelectFolder('Выберите~~каталог.','::{450D8FBA-AD25-11D0-98A8-0800361B1103}',1)||Eval('var_s')?_ViewValues('$var_s'):_Exit() ;;显示文件夹选择对话框。如果未选择,则退出

 

exect=$var_s=FileSaveDialog('Выберите~~имя.','::{450D8FBA-AD25-11D0-98A8-0800361B1103}','Скрипт(*.aut;*.au3)|Текстовый~~файл(*.ini;*.txt)',2)||Eval('var_s')?_ViewValues('$var_s'):_Exit() ;; 显示文件保存对话框。如果未选择,则输出

 

exect=$var_s=FileOpenDialog('Выберите~~имя.','::{450D8FBA-AD25-11D0-98A8-0800361B1103}','Скрипт(*.aut;*.au3)|Текстовый~~файл(*.ini;*.txt)',2)||Eval('var_s')?_ViewValues('$var_s'):_Exit() ;; 显示打开的文件对话框。如果未选择,则输出

 

exect=$var_section=@UserName='Андрей'?'F4':'Open_1' openz=%L||$var_section ;; 打开指定程序中的选定文件(相对于用户名进行设置)

 

exect=$var_i=(StringInStr(FileGetAttrib('%P%N'),'D')~~And~~FileExists('%P%N'))?1:0||_ViewValues($var_i) ;; 检查:返回1,如果在光标文件夹下,0  - 如果文件

 

exect=$var_a=5||$var_b=6||$var_imax=$var_a>$var_b?$var_a:$var_b||MsgBox(4096,'Сообщение','Максимальное~~число~~'&$var_imax) ;; 通过三元条件确定最大数量

 

exect=$var_a=5||$var_b=6||$var_imin=$var_a<$var_b?$var_a:$var_b||MsgBox(4096,'Сообщение','Минимальное~~число~~'&$var_imin) ;; 通过三元条件确定最小数量

 

exect=$var_a=25||$var_b=5||$var_icheck=(Int($var_a/$var_b)<>$var_a/$var_b)?0:1||MsgBox(4096,'Сообщение','Делимость.~~Результат:~~'&$var_icheck) ;;确定一个数字与另一个数字的可分割性(1可整除,0  - 不可整除)

 

exect=$var_put=FileOpenDialog('Select~~the~~file~~to~~create~~a~~shortcut','::{450D8FBA-AD25-11D0-98A8-0800361B1103}','File~~Wallet(*.exe)',2)||_ViewValues('$var_put')||$var_put=$var_put=''?_Exit():$var_put||_ViewValues('$var_put') ;; 显示打开的文件对话框。如果未选择,则输出

 

exect=$var_a=StringSplit('1a|'&'|3a|4a|5a|6a|7a|8a|9a','|',2) GLOBALEXECT<a> exect=$var_name='GLOBALEXECT<2>'=''''?'*':'имя'||_ViewValues('$var_name') ;; 空单元测试示例

 

sends=-1 exect=$var_a='GLOBALSENDS<1>' GLOBALEXECT<a> exect=$var_name=StringRegExp('GLOBALEXECT<1>','^[~~-_]?$',0)?'>':'test'||_ViewValues('$var_name') ;; 检查剪贴板的例子:如果在缓冲区空格, - ,_或空,那么$var_name是用符号>,否则测试

 

exect=$var_n=MsgBox(4+32+262144,'Сообщение','Продолжить~~работу?',20)||$var_i=$var_n=7?_Exit():1||_ViewValues('Работа~~продолжена') ;; 一个对话呼叫的例子,按"无"按钮完成,通过点击"是"按钮继续,在对话框出现后的20秒到期,同样的继续工作...

 

exect=$var_n=MsgBox(4+32+262144,'Сообщение','Отменить~~задачу?',20)||$var_i=$var_n=6?_Exit():1||_ViewValues('Работа~~продолжена') ;; 对话呼叫的一个例子,点击"是"按钮完成,继续按"无"按钮,在对话框出现后20秒到期,同样继续工作...

 

exect=$var_aa=_ArrayCreate(1,2) slist=PS<$f70//1//0//bar> forpgs <FOR> 1 <TO> GLOBALSLIST<0> sends=GLOBALSLIST<:INDEX:>||#Sbar5||@CRLF!!,~~ exect=$var_s='GLOBALSENDS<1>'=''''?'''':_ArrayAdd($var_aa,'GLOBALSLIST<:INDEX:>'&'~~'&'GLOBALSENDS<1>') <NEXT> exect=||_ViewValues($var_aa,'Поиск~~фразы~~'&ClipGet()&'~~в~~命令х') ;; 在表中显示按钮的数量和工具栏的TCTotal Commander,其中该命令具有来自缓冲区的短语

 

exect=$var_aa=_ArrayCreate(1,2) slist=PS<$f70//1//0//bar> forpgs <FOR> 1 <TO> GLOBALSLIST<0> sends=GLOBALSLIST<:INDEX:>||#Sbar5||@CRLF!!,~~ exect=$var_s='GLOBALSENDS<1>'=''''?'''':_ArrayAdd($var_aa,'GLOBALSLIST<:INDEX:>'&@CRLF&'GLOBALSENDS<1>') <NEXT> exect=||_ArrayToClip($var_aa,@CRLF) ;; 将按钮数量写入剪贴板以及Total Commander工具栏的名称,其中该命令包含缓冲区中的短语

 

zlist=PS<%P%N//1//0//nfo> exect=$var_path='GLOBALZLIST<1>'=''''?'%P%N':'GLOBALZLIST<1>' modfs=PS<%P%N//1>||0||<mdata=$var_path> ;;对于光标下的所有文件夹,使用条件更改修改日期:如果该文件夹中有文件.nfo,则日期修改取自该文件,如果无,然后从光标下的文件夹

 

slist=%L <FOR> 1 <TO> GLOBALSLIST<0> zlist=PS<GLOBALSLIST<:INDEX:>//1//0//nfo> exect=$var_path='GLOBALZLIST<1>'=''''?'GLOBALSLIST<:INDEX:>':'GLOBALZLIST<1>' modfs=PS<GLOBALSLIST<:INDEX:>//1>||0||<mdata=$var_path> <NEXT> ;; 对于每个选定文件夹的所有文件,更改修改日期与条件:如果文件夹中有一个文件.nfo,那么日期修改取自这个文件,如果无,然后从父文件夹

 

sends=c:\файл-список№1.txt??-1 exect=$var_s='' <FOR> 1 <TO> GLOBALSENDS<0> xends=c:\документ№2.txt??-1||formt<0!!(?m)(GLOBALSENDS<:INDEX:>.+)> exect=$var_s=GLOBALXENDS<0>>=6?'$var_s'&_ArrayToString($GLOBALXENDS,@CRLF,1)&@CRLF:'$var_s' <NEXT> asave=var_s||c:\документ№2_rez.txt||noarray<1> ;;检索从文件c的所有行:\dokument№2.txt其中存在从文件c短语:\文件spisok№1.txt(行数是多或6)和将结果写入文件c:\dokument№2_rez .TXT

 

sends=c:\файл-список№1.txt??-1 exect=$var_s='' <FOR> 1 <TO> GLOBALSENDS<0> xends=c:\документ№2.txt??-1||formt<0!!(?m)(GLOBALSENDS<:INDEX:>.+)> exect=$var_s=GLOBALXENDS<0>>=6?'$var_s'&'GLOBALSENDS<:INDEX:>'&@CRLF:'$var_s' <NEXT> asave=var_s||c:\документ№2_rez2.txt||noarray<1> ;; 将所有单词从列表c:\file-list#1.txt写入文件c:\document#2_rez2.txt,这将在字符串x文件中符合6次和更多次c:\document#2.txt

 

exect=$var_n=MsgBox(4+32+262144,'Сообщение','Заменить~~содержимое~~в~~папке~~ПН?')||$var_i=$var_n=7?_Exit():1 delss=PS<%T%M>||1 copys=FOLDC<%L>||%T%M//0 beepss ;; 使用活动面板中所选文件夹的内容替换目标面板中目录的内容

 

sends=<info=o3%P%N//>??1 exect=$var_n=Floor('GLOBALSENDS<1>')||$var_n=$var_n<=1?1:($var_n<=10?2:($var_n<=100?3:($var_n<=500?4:5)))||_ViewValues($var_n) ;; 获取文件夹大小和分配数量范围的示例:小于1mb  -  1,从1到10mb  -  2,从10到100 mb -3,从100到500 mb,从500和以上-5

 

itray=3 wends=-1||formt<63,56,54,51,55> slist=%L <FOR> 1 <TO> GLOBALSLIST<0> exect=$var_n=Floor('<info=o3GLOBALSLIST<:INDEX:>//>')||$var_n=$var_n<=1?1:($var_n<=10?2:($var_n<=100?3:($var_n<=500?4:5)))||$var_p='%%COMMANDER_PATH%%\Personal\commands\fold\$var_n.ico' icoft=GLOBALSLIST<:INDEX:>||0||$var_p||foldicon<favicon!!1!!1> <NEXT> attrb=FOLDC<$GLOBALSLIST//1//0//Desktop.ini>||-HS!!0 textx=FOLDC<$GLOBALSLIST//1//0//Desktop.ini>||&&([^^]+)!!$1@CRLFInfoTip=GLOBALWENDS<1>||backup<0> attrb=FOLDC<$GLOBALSLIST//1//0//Desktop.ini>||+HS!!0 ;; 将图标分配给所选文件夹(取决于文件夹的大小,将分配不同的图标)路径到具有图标的文件夹%%COMMANDER_PATH %%\fold\icon name 1,2,3,4,5

 

exect=$var_sys=@OSArch='X86'?'x86':'x64' start=%%COMMANDER_PATH%%\Neo\$var_sys\HexFrame.exe||workdir<%%COMMANDER_PATH%%\Neo\$var_sys> ;; 在x64/x86系统上运行HexFrame程序

 

exect=$var_n=MsgBox(4+32+262144,'Сообщение','Удалить~~текущую~~папку?')||$var_i=$var_n=7?_Exit():1 tcimg=$cm2002 delsm="%p"||1||upd<1> ;; 删除当前文件夹(取消动作的能力)

 

slist=[tc=AM] <FOR> 1 <TO> GLOBALSLIST<0> exect=$var_i=<info=o9%%TCIMG_TEMP%%\link-font.txt//> $FORCONT=$var_i=2?0:1 downl=GLOBALSLIST<:INDEX:>fonts//2||%%TCIMG_TEMP%%\link-font.txt||pause<1-2>||progres<> <NEXT> ;; 如果文件link-font.txt与链接列表存在于文件夹TCIMG_TEMP中,然后开始下载列表并将数据保存在文件夹中 fonts

 

<FOR> 1 <TO> 5 infbx=InfoBox_TEST1 exect=$var_n=0 $FORCONT=$var_n=1?0:1 infbx=InfoBox_TEST2 <NEXT> ;; 在循环中使用$FORCONT标签的示例

 

exect=$var_n=1||$var_i=$var_n=1?_CmdCm('infbx=InfoBox_TEST1'):_CmdCm('infbx=InfoBox_TEST2') ;; 例如:如果$var_n = 1,那么一个执行命令,否则另一个

 

exect=$var_n=0||$var_i=$var_n=1?_CmdCm('infbx=InfoBox_TEST1'):_CmdCm('infbx=InfoBox_TEST2') ;; 例如:如果$var_n = 0,那么一个执行命令,否则另一个

 

exect=$var_s=##@[tc=TA]||$var_p=StringRight('$var_s',1)='\'?'$var_s':''''||_ViewValues('$var_p') ;; 检查对侧面板中光标下的文件夹的存在,如果文件夹,则变量$var_p包含其路径,如果文件,然后空白

 

exect=$var_n=1||$var_i=$var_n=1?_CmdCm('sends=%P%N??-1||formt<1,63><¤>GLOBALXSENDS<a>'):'''' ;; 示例:如果$var_n = 1,则读取光标下的文件并在表中显示

up2

tcimage © Аверин Андрей для Total Commander Image Averin-And@yandex.ru