Что нового

Передача параметров из командной строки в скрипт.

Isn

Новичок
Сообщения
119
Репутация
3
Доброго времени суток форумчане, имеется следующий код:
Код:
If $CmdLine[0] = "" Then 
	MsgBox(64, "Сообщение", "Запуск произведен без параметров, приложение будет закрыто.", 10)
	Exit
EndIf
;-----------------------------------------------------
If $CmdLine[1] = "-o1" Then 
	$sParam1 = " "
EndIf
;-----------------------------------------------------
If $CmdLine[1] = "-o2" Then 
	$sParam2 = " "
EndIf

пытаюсь реализовать следующее: запуск из командной строки с передачей параметров
код в *.bat*
Код:
test.exe -o1 C:\34_1.tmp -o2 C:\34_2.tmp
вопрос: как при параметре -o1 сделать чтобы $sParam1 был = "C:\34_1.tmp", а при -o2 $sParam2 = "C:\34_2.tmp"
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,323
Isn,
Так?
Код:
$iRan = Random(1, 2, 1)
Dim $aCmdLine[4] = [3, '-o' & $iRan, 'C:\34_1.tmp', 'C:\34_2.tmp'];для примера

$sParam1 = ''
$sParam2 = ''
If $aCmdLine[0] <> 3 Then
;If Not $CmdLine[0] Then
	MsgBox(64, 'Сообщение', 'Запуск произведен без параметров, приложение будет закрыто.', 10)
	Exit
EndIf
;$iNum = StringRegExpReplace($CmdLine[1], '[^\d]', '')
$iNum = StringRegExpReplace($aCmdLine[1], '[^\d]', '')
;Assign('sParam' & $iNum, $CmdLine[1][$iNum], 2)
Assign('sParam' & $iNum, $aCmdLine[$iNum + 1], 2)

MsgBox(64, 'Info', StringFormat('%s:\t"%s"\n%s:\t"%s"\n%s:\t"%s"', '$CmdLine[1]', $aCmdLine[1], '$sParam1', $sParam1, '$sParam2', $sParam2))
Поменял код.
 

winstan

Эксплотатор)
Сообщения
406
Репутация
79
Можно запустить
хоть так
Код:
test.exe -o1 C:\34_1.tmp -o2 C:\34_2.tmp
или так...
Код:
test.exe -o2 C:\34_2.tmp -o1 C:\34_1.tmp
Код:
If $CmdLine[0] = "" Then
    MsgBox(64, "Сообщение", "Запуск произведен без параметров, приложение будет закрыто.", 10)
    Exit
EndIf
For $i=1 to 2
$t=$i*2-1
;-----------------------------------------------------
If $CmdLine[$t] = "-o1" Then
    $sParam1 = $CmdLine[$t+1]
EndIf
;-----------------------------------------------------
If $CmdLine[$t] = "-o2" Then
    $sParam2 = $CmdLine[$t+1]
EndIf
Next

MsgBox(0,0,'$sParam1='&$sParam1)
MsgBox(0,0,'$sParam2='&$sParam2)
 
Автор
Isn

Isn

Новичок
Сообщения
119
Репутация
3
по отдельности оба примера работают, а в этом коде не могу разобраться
вот код полностью:
Код:
#NoTrayIcon
#Include <EditConstants.au3>
#Include <GUIConstantsEx.au3>
#Include "Copy.au3"
;--------------------------------------------------------------------------------------------------------------------------------------------------------
Opt('MustDeclareVars', 1)
Opt('TrayAutoPause', 0)
;--------------------------------------------------------------------------------------------------------------------------------------------------------
Global $hForm, $Input1, $Input2, $Button1, $Button2, $Button3, $Button4, $Data, $Msg, $Path, $Progress, $State, $Copy = False, $Pause = False
Global $Source = ' ', $Destination = ' '
;--------------------------------------------------------------------------------------------------------------------------------------------------------
If Not _Copy_OpenDll() Then
    MsgBox(16, '', 'Не найдена библиотека *.dll')
    Exit
EndIf
;--------------------------------------------------------------------------------------------------------------------------------------------------------
If $CmdLine[0] = "" Then
    MsgBox(64, "Сообщение", "Запуск произведен без параметров, приложение будет закрыто.", 10)
    Exit
EndIf
For $i=1 to 2
$t=$i*2-1
;-----------------------------------------------------
If $CmdLine[$t] = "-o1" Then
    $Source = $CmdLine[$t+1]
EndIf
;-----------------------------------------------------
If $CmdLine[$t] = "-o2" Then
    $Destination = $CmdLine[$t+1]
EndIf
Next
;--------------------------------------------------------------------------------------------------------------------------------------------------------
$hForm = GUICreate('Копирование', 360, 163)
$Progress = GUICtrlCreateProgress(14, 94, 332, 16)
;--------------------------------------------------------------------------------------------------------------------------------------------------------
GUICtrlSetState(-1, $GUI_DISABLE)
GUISetState()
;--------------------------------------------------------------------------------------------------------------------------------------------------------
While 1
    If $Copy Then
        $State = _Copy_GetState()
        If $State[0] Then
            $Data = Round($State[1] / $State[2] * 100)
            If GUICtrlRead($Progress) <> $Data Then
                GUICtrlSetData($Progress, $Data)
            EndIf
        Else
            Switch $State[5]
                Case 0
                    GUICtrlSetData($Progress, 100)
                    MsgBox(64, '', 'Файл был успешно скопирован.', 0, $hForm)
                Case 1235 
                    MsgBox(16, '', 'Операция прервана.', 0, $hForm)
                Case Else
                    MsgBox(16, '', 'Файл не был скопирован.' & @CR & @CR & $State[5], 0, $hForm)
					Exit
            EndSwitch
            GUICtrlSetData($Progress, 0)
            GUICtrlSetData($Button3, 'Копировать')
            GUICtrlSetData($Button4, ';')
            $Copy = 0
        EndIf
    EndIf
;--------------------------------------------------------------------------------------------------------------------------------------------------------
	_Copy_CopyFile($Source, $Destination)
	$Copy = 1
;--------------------------------------------------------------------------------------------------------------------------------------------------------	
    $Msg = GUIGetMsg()
    Switch $Msg
        Case $GUI_EVENT_CLOSE
            ExitLoop
    EndSwitch
WEnd
;--------------------------------------------------------------------------------------------------------------------------------------------------------
Copy.au3
пример кода взят отсюда: Копируем файлы без "тормозов"
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
Isn
либо убери
Код:
Opt('MustDeclareVars', 1)

либо вставь
Код:
Global $t

там где остальные глобальные переменные описаны
 
Автор
Isn

Isn

Новичок
Сообщения
119
Репутация
3
winstan, Kaster Спасибо за ответы
 
Верх