#NoTrayIcon
If Not @Compiled Then
MsgBox(16, 'Error', 'Надо скомпилировать сначала')
Exit
EndIf
If Not $CmdLine[0] Then
MsgBox(16, 'Error', 'No $CmdLine')
Exit
EndIf
If WinExists(@ScriptName & '{[/@$@\]}') Then Exit
AutoItWinSetTitle(@ScriptName & '{[/@$@\]}')
$aFiles = _Get_Files()
If @error Then
MsgBox(16, 'Error', 'Нет файлов с нужными расширениями')
Exit
EndIf
$iConvert = _Convert($aFiles)
$iErrorConvert = @error
$iErrorMove = @extended
If $iErrorConvert > 0 Then
MsgBox(16, 'Error', 'Ошибок конвертации: ' & $iErrorConvert & @LF & 'Успешно конвертировано: ' & _
$iConvert & @LF & 'Ошибок перемещения: ' & $iErrorMove)
ElseIf $iErrorConvert < 0 Then
MsgBox(16, 'Error', 'Error')
Else
MsgBox(64, 'Info', 'Успешно конвертировано: ' & $iConvert & _
@LF & 'Ошибок перемещения: ' & $iErrorMove)
EndIf
Func _Convert($a_Files)
Local $s_Ext = 'tga', $s_Nconvert = 'nconvert.exe', $s_TempDir = @ScriptDir & '\_Temp', _
$i_End, $s_ConvertName, $i_CountErrorConvert = 0, $i_CountSuccess = 0, $i_CountErrorMove = 0
If Not FileExists($s_TempDir) Then
If Not DirCreate($s_TempDir) Then Return SetError(-1, 0, 0)
EndIf
If Not FileInstall('nconvert.exe', $s_TempDir & '\' & $s_Nconvert, 1) Then Return SetError(-1, 0, 0)
For $i = 1 To $a_Files[0]
$i_End = RunWait('"' & $s_TempDir & '\' & $s_Nconvert & '" -overwrite -D -c 1 -out ' & $s_Ext & ' "' & $a_Files[$i] & '"', '', @SW_HIDE)
If Not $i_End Then
$i_CountSuccess += 1
$s_ConvertName = StringRegExpReplace($a_Files[$i], '\.[^.]*$', '.' & $s_Ext)
If Not FileMove($s_ConvertName, $s_TempDir & '\', 1) Then $i_CountErrorMove += 1
Else
$i_CountErrorConvert += 1
EndIf
Next
FileDelete($s_TempDir & '\' & $s_Nconvert)
Return SetError($i_CountErrorConvert, $i_CountErrorMove, $i_CountSuccess)
EndFunc ;==>_Convert
Func _Get_Files()
Local $s_Ext = 'tga|png|jpg|tif', _ ;допустимые расширения, можно задать любые нужные Вам расширения в таком же формате ('ext1|ext2|ext3|ext4' и т.д.)
$a_Files[$CmdLine[0] + 1], $s_Attrib, $i_Count
For $i = 1 To $CmdLine[0]
If StringRegExp($CmdLine[$i], '(?i).+\.(' & $s_Ext & ')$') Then
$s_Attrib = FileGetAttrib($CmdLine[$i])
If $s_Attrib And Not StringInStr($s_Attrib, 'D') Then
$i_Count += 1
$a_Files[$i_Count] = $CmdLine[$i]
EndIf
EndIf
Next
If $i_Count Then
ReDim $a_Files[$i_Count + 1]
$a_Files[0] = $i_Count
Return $a_Files
Else
SetError(1)
EndIf
EndFunc ;==>_Get_Files