Нумерованный алгоритм переименования файлов - PullRequest
0 голосов
/ 15 февраля 2012

Вопрос помечен как ASP классический, но решение алгоритма в порядке.

У меня есть следующий набор файлов, которые нумеруются последовательно:

1.jpg, 2.jpg, 3.jpg, 4.jpg ... X.jpg

Мне нужна функция, которая будет принимать в качестве входных данных два имени файла, параметр fromFile и toFile, и которая должна переименовывать все необходимые файлы таким образом, чтобы файл from перемещался в последовательности перед toFile и файлами между ними. перенумерован.

Примеры:

Перемещение 1.jpg на 4.jpg должно сделать следующее:

  • переименовать 1.jpg в 1.jpg.temp
  • переименовать 2.jpg в 1.jpg
  • переименовать 3.jpg в 2.jpg
  • переименовать 1.jpg.temp в 3.jpg
  • другие файлы не затрагиваются операцией

Перемещение 4.jpg в 2.jpg должно сделать следующее:

  • переименовать 4.jpg в 4.jpg.tmp
  • переименовать 3.jpg в 4.jpg
  • переименовать 2.jpg в 3.jpg
  • переименовать 1.jpg в 2.jpg
  • переименовать 4.jpg.tmp в 1.jpg
  • другие файлы не затрагиваются

В качестве ввода у меня есть массив строк, содержащих имена файлов и два имени файла в / из.

Подскажите, как лучше всего переименовать файл?

1 Ответ

1 голос
/ 16 февраля 2012

Вот краткий подход, учитывая, что все ваши файлы будут называться numeric.jpg, однако вам придется создавать свои собственные функции:

FileExists(Filename)
RenameFile(OriginalFilename,NewFilename)

<%

Input1 = Request.Form("file1")
Input2 = Request.Form("file2")

'gets digits only
Input1Digit = Left(Input1,Instr(Input1,".")) 
Input2Digit = Left(Input2,Instr(Input2,".")) 


'is file1 less than file2?             
If Input1Digit < Input2Digit Then    

    'loop through the digits frontwards 1 to 5
    For x = Input1Digit to Input2Digit    

        'if the first loop?
        If cStr(x) = cStr(Input1Digit) Then 

            'see if file exists here
            If FileExists(Input1) Then 
                FileRename(Input1, Input1 & ".temp") 'Rename the file here [From, To]
                OriginalFileExists = True
            Else
                FileRename(Input1, Input1Digit & ".jpg"
                OriginalFileExists = False
            End If

        'if not on the first loop?
        Else        

            'did the original file exist '.temp'
            If OriginalFileExists Then 
                NewFileName = cInt(x) - 1
            Else
                NewFileName = cInt(x)
            End If    

            'rename each file here
            RenameFile(x & ".jpg", NewFileName & ".jpg")

        End If    
    Next 

Else


    'loop through the digits more to less 5 to 1
    For x = Input1Digit to Input2Digit STEP -1    

        'if the first loop?
        If cStr(x) = cStr(Input1Digit) Then 

            'see if file exists here
            If FileExists(Input1) Then 
                FileRename(Input1, Input1 & ".temp") 'Rename the file here [From, To]
                OriginalFileExists = True
            Else
                FileRename(Input1, Input1Digit & ".jpg"
                OriginalFileExists = False
            End If

        'if not on the first loop?
        Else        

            'did the original file exist '.temp'
            If OriginalFileExists Then 
                NewFileName = cInt(x) + 1
            Else
                NewFileName = cInt(x)
            End If    

            'rename each file here
            RenameFile(x & ".jpg", NewFileName & ".jpg")

        End If    
    Next 



End If
%>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...