def MultipartArchiving(firstPartExtractList, otherPartSkippedList, archiveDir, otherPartFilePath = None):
  """
  Archive all parts of multi-part compressed file.

  If file has been extracted (via part1) then move all subsequent parts directly to archive directory.
  If file has not been extracted then if part >1 add to other part skipped list and only archive
  when the first part is sent for archiving.

  Parameters
  ----------
    firstPartExtractList : list
      File directory to search.

    otherPartSkippedList : list
      List which any file matches will be added to.

    archiveDir : list
      List of directories to ignore in recursive lookup (currently unused).

    otherPartFilePath : list [optional : default = None]
      List of supported file formats to search for.
  """
  if otherPartFilePath is None:
    for filePath in list(otherPartSkippedList):
      MultipartArchiving(firstPartExtractList, otherPartSkippedList, archiveDir, filePath)
  else:
    baseFileName = re.findall("(.+?)[.]part.+?rar", otherPartFilePath)[0]

    if baseFileName in firstPartExtractList:
      util.ArchiveProcessedFile(otherPartFilePath, archiveDir)
      if otherPartFilePath in otherPartSkippedList:
        otherPartSkippedList.remove(otherPartFilePath)
    elif otherPartFilePath not in otherPartSkippedList:
      otherPartSkippedList.append(otherPartFilePath)