2016-03-23 16 views
1

Ich versuche, Dateinamen zu erhöhen, wenn eine zuvor nummerierte vorhanden ist.Erstellen Sie einen eindeutigen Dateinamen durch Hinzufügen der inkrementellen Nummer

Zum Beispiel sollte es überprüfen, ob "Example.csv" existiert. Wenn dies der Fall ist, sollte die neue Datei "Example2.csv" heißen, dann "Example3.csv", "Example4.csv" und so weiter. Hier ist mein Code so weit:

$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 

Antwort

2

Um dies zu tun, müssen Sie die Dateinamen loopen.

$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

Ich versuche, Dateinamen zu erhöhen, wenn die vorherige Nummer existiert.

WhileFileExists()StringReplace(). Beispiel:

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', '') Funktionen wie angefordert. Aktuelle Uhrzeit einbeziehen:

$sFilename = 'C:\path\file_' & @YEAR & @MON & @YDAY & @HOUR & @MIN & @SEC & '.csv'