2016-03-23 6 views
1

Я пытаюсь увеличить имена файлов, если существует ранее пронумерованный.Создайте уникальное имя файла, добавив инкрементный номер

Например, он должен проверить, существует ли «Example.csv». Если это так, новый файл следует называть «Example2.csv», затем «Example3.csv», «Example4.csv» и так далее. Вот мой код:

$fileNum = 2 
; The $month variable is defined earler in the script but I'll define another var for this example 
$month = "January" 
If FileExists("Emissions Log - " & $month & ".csv") Then 
    If FileExists("Emissions Log - " & $month & $fileNum & ".csv") Then 
     $fileNum += 1 
     $file = FileOpen("Emissions Log - " & $month & $fileNum & ".csv", 1) 
    Else 
     $file = FileOpen("Emissions Log - " & $month & $fileNum & ".csv", 1) 
    EndIf 
Else 
    $file = FileOpen("Emissions Log - " & $month & ".csv", 1) 
EndIf 

ответ

2

Для этого вы должны закодировать имена файлов.

$month = "January" 

For $i = 0 To 1000 ;max file versions is set to 1000 

    If $i = 0 Then 
     $num = '' 
    Else 
     $num = $i 
    EndIf 

    If Not FileExists("Emissions Log - " & $month & $num & ".csv") then 
     $file = FileOpen("Emissions Log - " & $month & $num & ".csv", 1) 
     ExitLoop 
    EndIf 
Next 
1

Я пытаюсь увеличиваем имена файлов, если предыдущий номер существует.

WhileFileExists()StringReplace(). Пример:

Func _FilenameUnique(Const $sFilenameRequested, Const $sDelimiter = '-', Const $iCountStart = 2) 
    Local $iError   = 0, _ 
      $iCount   = $iCountStart - 1 
    Local $sFilenameUnique = $sFilenameRequested 

    While FileExists($sFilenameUnique) 

     $iCount   += 1 
     $sFilenameUnique = StringReplace($sFilenameRequested, '.', $sDelimiter & $iCount & '.', -1) 

    WEnd 

    Return SetError($iError, $iCount, $sFilenameUnique) 
EndFunc 

$sFilename = _FilenameUnique('C:\path\file.csv', '') функционирует в соответствии с запросом. Включить текущее время в качестве альтернативы:

$sFilename = 'C:\path\file_' & @YEAR & @MON & @YDAY & @HOUR & @MIN & @SEC & '.csv' 
Смежные вопросы