Source code

Revision control

Copy as Markdown

Other Tools

// FilePathAutoRename.cpp↩
#include "StdAfx.h"
#include "../../Windows/FileFind.h"
#include "FilePathAutoRename.h"
using namespace NWindows;↩
static bool MakeAutoName(const FString &name,↩
const FString &extension, UInt32 value, FString &path)↩
{↩
path = name;↩
path.Add_UInt32(value);↩
path += extension;↩
return NFile::NFind::DoesFileOrDirExist(path);↩
}↩
bool AutoRenamePath(FString &path)↩
{↩
int dotPos = path.ReverseFind_Dot();↩
int slashPos = path.ReverseFind_PathSepar();↩
FString name = path;↩
FString extension;↩
if (dotPos > slashPos + 1)↩
{↩
name.DeleteFrom(dotPos);↩
extension = path.Ptr(dotPos);↩
}↩
name += '_';↩
FString temp;↩
UInt32 left = 1, right = ((UInt32)1 << 30);↩
while (left != right)↩
{↩
UInt32 mid = (left + right) / 2;↩
if (MakeAutoName(name, extension, mid, temp))↩
left = mid + 1;↩
else
right = mid;↩
}↩
return !MakeAutoName(name, extension, right, path);↩
}↩