##ݒ
#wifictrl.exẽpX
wifictrl = "\Program Files\MyApp\wifictrl_ades\wifictrl.exe"

#T[o[OĨpX[h͂XNvg
LogonScript = SystemPath("ScriptPath") & "logon.mscr"

#T[o[̃tpXifoCXANZXꍇ̃pXj
ServerDir = "\\server\share"

#foCX̃tpX
DeviceDir = "\Temp"

##ݒ肱܂


##### C #####
##ϐ̏
TargetDir = ""
ArrayServerFileList = ""
ArrayDeviceFileList = ""


#LANڑ
lineOkNGFlg = true
CallFunction OnLine, lineOkNGFlg

#ڑɐf
If (NOT lineOkNGFlg)
   Call ExitSync
   Exit
EndIf


## ̊Jn ##
#T[o[̃tH_(΃pX)擾
TargetDir = ServerDir
CallFunction GetDirs, ArrayServerDirList

##foCX̃tH_(΃pX)擾
#TargetDir = DeviceDir
#CallFunction GetDirs, ArrayDeviceDirList

#SfBNgɂĔr
ForEach DirName in array (ArrayServerDirList)

        #T[o[̃tH_itpXj
        ServerDirPath = ServerDir & DirName

        #݂ƁuvfoCX̃tH_itpXj
        DeviceDirPath = DeviceDir & DirName

        #݃`FbN
        If (NOT DirExists(DeviceDirPath))
           #݂ĂȂ̂ō쐬
           MkDir(DeviceDirPath)
        EndIf

        #T[o[̃t@Cꗗ擾
        TargetDir = ServerDirPath
        CallFunction GetFiles, ArrayServerFileList

        #St@Cr
        ForEach FileName in array (ArrayServerFileList)

                #T[o[̃t@CitpXj
                ServerFilePath = ServerDirPath & "\" & FileName

                #݂ƁuvfoCX̃t@CitpXj
                DeviceFilePath = DeviceDirPath & "\" & FileName

                #foCX̃t@C݃`FbN
                If (NOT FileExists(DeviceFilePath))

                   #݂Ȃ߃T[o[Rs[
                   Copy(ServerFilePath, DeviceFilePath, 1)

                Else

                   #ꂼ̍ŏIXV擾
                   ServerFile_ModifyTime = FileModifyTime(ServerFilePath)
                   DeviceFile_ModifyTime = FileModifyTime(DeviceFilePath)

                   #T[o[Vꍇ̂݃foCX㏑
                   If (ServerFile_ModifyTime > DeviceFile_ModifyTime)
                      Copy(ServerFilePath, DeviceFilePath, 1)
                   EndIf

                EndIf
        EndForEach

EndForEach

#I
Call ExitSync

Exit
##### C ܂ #####


### t@Cꗗ̎擾 ###
##  TargetDir̊Kwɂt@CzŕԂ
Sub GetFiles
    i = 1
    _ArrayFileList = ""

    ForEach _GetPath in files (TargetDir & "\*.*")
      _ArrayFileList[i] = SubStr(_GetPath, ReverseFind(_GetPath, "\") + 1, ReverseFind(_GetPath, "\") - 1)
      i = i + 1
    EndForEach

    Return(_ArrayFileList)
EndSub
### t@Cꗗ̎擾 ܂ ###


### tH_ꗗ̎擾 ###
Sub GetDirs
    i = 1
    k = 1
    _ArrayDirList = ""
    _Sub_ArrayDirList = ""
    _Temp_ArrayDirList = ""
    _ExitFlg = false
    _FindSubFlg = false


    #ŏʃtH_
    _ArrayDirList[i] = "\"
    i = i + 1

    #{JntH_
    _Temp_ArrayDirList[1] = TargetDir

    #fBNg{Jn
    While (NOT _ExitFlg)

           #
           k = 1
           _Sub_ArrayDirList = ""
           _FindSubFlg = false

           #̊KwɑtH_{
           ForEach _Temp_DirList in array (_Temp_ArrayDirList)

                    #tH_̃pX́A߂lpƎ̑{Jnpꂼɕۑ
                    ForEach _GetSubDir in directories (_Temp_DirList & "\*")

                            _Sub_ArrayDirList[k] = _GetSubDir
                             k = k + 1

                             #_GetSubDir = SubStr(_GetSubDir, ReverseFind(_GetSubDir, "\") + 1, ReverseFind(_GetSubDir, "\") - 1)
                             _GetSubDir = "\" & Replace(_GetSubDir, ServerDir & "\", "")
                            _ArrayDirList[i] = _GetSubDir
                            i = i + 1

                             #łtH_̂𔻒
                            _FindSubFlg = true
                    EndForEach

           EndForEach

           #ŉw܂ŃtH_{̂
           If (NOT _FindSubFlg)
                #Sđ{ÎŏItO
               _ExitFlg = true
           Else
               #܂tH_݂̂ōēx{
              _Temp_ArrayDirList = ""
              _Temp_ArrayDirList = _Sub_ArrayDirList
           EndIf

    EndWhile

    #tH_Ԃ
    Return(_ArrayDirList)
EndSub
### tH_ꗗ̎擾 ܂ ###


### ڑ ###
Sub OnLine
    RunWait(wifictrl, "on")
    _onlineFlg = false
    _lineOkNGFlg = false
    i = 1

    While(NOT _onlineFlg)
      #5bҋ@
      Sleep(5000)

      #OIXNvgʃvZXŎs
      Run(LogonScript)

      #ڑ`FbN
      If (NOT DirExists(ServerDir))
         If (i >= 6)
            #30bo߂ĂڑoȂ̂ŋI
            _onlineFlg = true
         Else
            i = i + 1
         EndIf
      Else
         _onlineFlg = true
         _lineOkNGFlg = true
      EndIf

      #OIXNvgcĂI
      If (ScriptProcExists(LogonScript) = 1)
         KillScript(LogonScript)
      EndIf

    EndWhile

    Return(_lineOkNGFlg)
EndSub
### ڑ ܂ ###


### I ###
Sub ExitSync
    #LANڑ
    RunWait(wifictrl, "off")
    Sleep(5000)

    #TXyh
    PowerOff
EndSub
### I ܂ ###
