20230416
This commit is contained in:
parent
3f774d751f
commit
79b0df8609
@ -23,6 +23,84 @@ internal static class Executor
|
|||||||
WriteLine(args.Message);
|
WriteLine(args.Message);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Получение параметров разбиения
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="params">Парсер параметров</param>
|
||||||
|
/// <returns>Список параметров <see cref="FileSplitOptions"/></returns>
|
||||||
|
public static List<FileSplitOptions> GetSplitOptions (ConsoleParamsParser @params)
|
||||||
|
{
|
||||||
|
//Создаю результат
|
||||||
|
List<FileSplitOptions> result = new();
|
||||||
|
|
||||||
|
//Проверяю параметры разбиения
|
||||||
|
//- отключена ли проверка хэша
|
||||||
|
if (@params.HasParam("/NoCheckHash"))
|
||||||
|
result.Add(FileSplitOptions.fsoNoCheckHash);
|
||||||
|
//- нужно ли удалять исходный файл
|
||||||
|
if (@params.HasParam("/DeleteSource"))
|
||||||
|
result.Add(FileSplitOptions.fsoDeleteSourceFileAfterSplit);
|
||||||
|
//- нужно ли шифровать файл информации
|
||||||
|
if (@params.HasParam("/EncryptInfoFile"))
|
||||||
|
result.Add(FileSplitOptions.fsoEncryptInfoFile);
|
||||||
|
|
||||||
|
//Вывожу результат
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Получение параметров разбиения
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="params">Массив параметров</param>
|
||||||
|
/// <returns>Список параметров <see cref="FileSplitOptions"/></returns>
|
||||||
|
public static List<FileSplitOptions> GetSplitOptions (string[] @params)
|
||||||
|
{
|
||||||
|
ConsoleParamsParser parser = new(@params);
|
||||||
|
return GetSplitOptions(parser);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Получение параметров соединения
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="params">Парсер параметров</param>
|
||||||
|
/// <returns>Список параметров <see cref="FileJoinOptions"/></returns>
|
||||||
|
public static List<FileJoinOptions> GetJoinOptions (ConsoleParamsParser @params)
|
||||||
|
{
|
||||||
|
//Создаю результат
|
||||||
|
List<FileJoinOptions> result = new();
|
||||||
|
|
||||||
|
//Проверяю параметры разбиения
|
||||||
|
//- отключена ли проверка хэша
|
||||||
|
if (@params.HasParam("/NoCheckHash"))
|
||||||
|
result.Add(FileJoinOptions.fjoNoCheckHash);
|
||||||
|
//- нужно ли удалять исходные файлы
|
||||||
|
if (@params.HasParam("/DeleteSource"))
|
||||||
|
result.Add(FileJoinOptions.fjoDeleteSourceFilesAfterJoin);
|
||||||
|
//- нужно ли дешифровать файл информации
|
||||||
|
if (@params.HasParam("/DecryptInfoFile"))
|
||||||
|
result.Add(FileJoinOptions.fjoInfoFileIsEncrypted);
|
||||||
|
//- нужно ли отключить проверку версии файла информации
|
||||||
|
if (@params.HasParam("/IgnoreVersion"))
|
||||||
|
result.Add(FileJoinOptions.fjoIgnoreSupportedScriptVersion);
|
||||||
|
//- нужно ли отключить проверку объединённого файла на корректность
|
||||||
|
if (@params.HasParam("/SkipCheck"))
|
||||||
|
result.Add(FileJoinOptions.fjoSkipCheckJoinedFile);
|
||||||
|
|
||||||
|
//Вывожу результат
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Получение параметров соединения
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="params">Массив параметров</param>
|
||||||
|
/// <returns>Список параметров <see cref="FileJoinOptions"/></returns>
|
||||||
|
public static List<FileJoinOptions> GetJoinOptions (string[] @params)
|
||||||
|
{
|
||||||
|
ConsoleParamsParser parser = new(@params);
|
||||||
|
return GetJoinOptions(parser);
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Выполняю разбиение
|
/// Выполняю разбиение
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -52,10 +130,10 @@ internal static class Executor
|
|||||||
fileInfo.SplitCount);
|
fileInfo.SplitCount);
|
||||||
|
|
||||||
//- получаю ответ
|
//- получаю ответ
|
||||||
string? userInput = ReadLine();
|
string userInput = ReadInput("");
|
||||||
|
|
||||||
//- проверяю согласие
|
//- проверяю согласие
|
||||||
if (userInput == null || userInput.ToLower() != "y")
|
if (userInput != "y")
|
||||||
//-- и прерываю, если не получил
|
//-- и прерываю, если не получил
|
||||||
return FsExitCode.ecUserAborted;
|
return FsExitCode.ecUserAborted;
|
||||||
}
|
}
|
||||||
@ -86,10 +164,10 @@ internal static class Executor
|
|||||||
WriteLine(Localization.MessageJoinAsk, targetFileName);
|
WriteLine(Localization.MessageJoinAsk, targetFileName);
|
||||||
|
|
||||||
//- получаю ответ
|
//- получаю ответ
|
||||||
string? userInput = ReadLine();
|
string userInput = ReadInput("");
|
||||||
|
|
||||||
//- проверяю согласие
|
//- проверяю согласие
|
||||||
if (userInput == null || userInput.ToLower() != "y")
|
if (userInput != "y")
|
||||||
//-- и прерываю, если не получил
|
//-- и прерываю, если не получил
|
||||||
return FsExitCode.ecUserAborted;
|
return FsExitCode.ecUserAborted;
|
||||||
}
|
}
|
||||||
@ -110,13 +188,13 @@ internal static class Executor
|
|||||||
WriteLine(Localization.InteractiveStartAsk);
|
WriteLine(Localization.InteractiveStartAsk);
|
||||||
|
|
||||||
//Получаю ответ
|
//Получаю ответ
|
||||||
userInput = ReadLine() ?? string.Empty;
|
userInput = ReadInput(string.Empty);
|
||||||
|
|
||||||
//Обработано ли решение
|
//Обработано ли решение
|
||||||
bool handled = false;
|
bool handled = false;
|
||||||
|
|
||||||
//Обрабатываем выбор пользователя
|
//Обрабатываем выбор пользователя
|
||||||
switch (userInput.ToLower())
|
switch (userInput)
|
||||||
{
|
{
|
||||||
//Если пользователь выбрал разбиение
|
//Если пользователь выбрал разбиение
|
||||||
case "s":
|
case "s":
|
||||||
@ -131,6 +209,35 @@ internal static class Executor
|
|||||||
handled = true;
|
handled = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Если пользователь выбрал соединение
|
||||||
|
case "j":
|
||||||
|
{
|
||||||
|
//- то запускаем соединение
|
||||||
|
FsExitCode joinExitCode = DoJoinInteractive();
|
||||||
|
|
||||||
|
//- вывожу сообщение
|
||||||
|
WriteLine(Localization.InteractiveOperationFinish, Localization.ExitCodeNames.First(eCode => eCode.Item1 == joinExitCode).Item2);
|
||||||
|
|
||||||
|
//- указываем на перехват
|
||||||
|
handled = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Если пользователь выбрал опции
|
||||||
|
case "o":
|
||||||
|
{
|
||||||
|
//- то запускаем опции
|
||||||
|
FsExitCode optionsExitCode = DoOptionsInteractive();
|
||||||
|
|
||||||
|
//- вывожу сообщение
|
||||||
|
WriteLine(Localization.InteractiveOperationFinish, Localization.ExitCodeNames.First(eCode => eCode.Item1 == optionsExitCode).Item2);
|
||||||
|
|
||||||
|
//- указываем на перехват
|
||||||
|
handled = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
//Если пользователь указал на выход
|
//Если пользователь указал на выход
|
||||||
case "e":
|
case "e":
|
||||||
//- то указываем на перехват
|
//- то указываем на перехват
|
||||||
@ -154,7 +261,7 @@ internal static class Executor
|
|||||||
/// <returns><see cref="FsExitCode"/></returns>
|
/// <returns><see cref="FsExitCode"/></returns>
|
||||||
public static FsExitCode DoSplitInteractive ()
|
public static FsExitCode DoSplitInteractive ()
|
||||||
{
|
{
|
||||||
//Пользовательский ввод
|
//Класс локализации
|
||||||
string userInput;
|
string userInput;
|
||||||
|
|
||||||
//Обработан ли ввод
|
//Обработан ли ввод
|
||||||
@ -168,7 +275,7 @@ internal static class Executor
|
|||||||
WriteLine(Localization.InteractiveSplitFileNameAsk);
|
WriteLine(Localization.InteractiveSplitFileNameAsk);
|
||||||
|
|
||||||
//Считываю имя файла
|
//Считываю имя файла
|
||||||
userInput = ReadLine() ?? string.Empty;
|
userInput = ReadInput(string.Empty);
|
||||||
|
|
||||||
//Если файл не существует
|
//Если файл не существует
|
||||||
if (!File.Exists(userInput))
|
if (!File.Exists(userInput))
|
||||||
@ -177,7 +284,7 @@ internal static class Executor
|
|||||||
WriteLine(Localization.InteractiveFileNameNotExist);
|
WriteLine(Localization.InteractiveFileNameNotExist);
|
||||||
|
|
||||||
//- считываю ответ
|
//- считываю ответ
|
||||||
userInput = ReadLine() ?? string.Empty;
|
userInput = ReadInput(string.Empty);
|
||||||
|
|
||||||
//- если выбрано не повторять
|
//- если выбрано не повторять
|
||||||
if (userInput.ToLower() != "y")
|
if (userInput.ToLower() != "y")
|
||||||
@ -203,7 +310,7 @@ internal static class Executor
|
|||||||
WriteLine(Localization.InteractiveSplitTargetDirAsk);
|
WriteLine(Localization.InteractiveSplitTargetDirAsk);
|
||||||
|
|
||||||
//Считываю данные
|
//Считываю данные
|
||||||
userInput = ReadLine() ?? string.Empty;
|
userInput = ReadInput(string.Empty);
|
||||||
|
|
||||||
//Если вместо папки пустое место
|
//Если вместо папки пустое место
|
||||||
if (string.IsNullOrWhiteSpace(userInput))
|
if (string.IsNullOrWhiteSpace(userInput))
|
||||||
@ -236,16 +343,13 @@ internal static class Executor
|
|||||||
WriteLine(Localization.InteractiveSplitPartSizeAsk);
|
WriteLine(Localization.InteractiveSplitPartSizeAsk);
|
||||||
|
|
||||||
//Считываю размер части
|
//Считываю размер части
|
||||||
userInput = ReadLine() ?? fileSize.ToString();
|
partSize = ReadInput(fileSize);
|
||||||
|
|
||||||
//Задаю размер части
|
|
||||||
partSize = TypeConverter.StrToInt64(userInput, fileSize);
|
|
||||||
|
|
||||||
//Запрашиваю согласие на размер части
|
//Запрашиваю согласие на размер части
|
||||||
WriteLine(Localization.InteractiveSplitPartSizeAsk2, converter.Convert(partSize));
|
WriteLine(Localization.InteractiveSplitPartSizeAsk2, converter.Convert(partSize));
|
||||||
|
|
||||||
//Считываю ответ
|
//Считываю ответ
|
||||||
userInput = ReadLine() ?? string.Empty;
|
userInput = ReadInput(string.Empty);
|
||||||
|
|
||||||
//Если согласен, то выхожу из цикла
|
//Если согласен, то выхожу из цикла
|
||||||
if (userInput.ToLower() == "y")
|
if (userInput.ToLower() == "y")
|
||||||
@ -256,33 +360,200 @@ internal static class Executor
|
|||||||
WriteLine(Localization.InteractiveSplitPartSizeResult, converter.Convert(partSize));
|
WriteLine(Localization.InteractiveSplitPartSizeResult, converter.Convert(partSize));
|
||||||
|
|
||||||
/* Опции разбиения */
|
/* Опции разбиения */
|
||||||
//Ввожу переменную опций разбиения
|
|
||||||
List<FileSplitOptions> options = new();
|
|
||||||
|
|
||||||
//Запрос опций разбиения
|
//Запрос опций разбиения
|
||||||
WriteLine(Localization.InteractiveSplitOptionsAsk);
|
WriteLine(Localization.InteractiveSplitOptionsAsk);
|
||||||
|
|
||||||
//Считываю опции разбиения
|
//Считываю опции разбиения
|
||||||
userInput = (ReadLine() ?? string.Empty).ToLower().Trim();
|
userInput = ReadInput(string.Empty);
|
||||||
|
|
||||||
//Инициализирую список параметров
|
//Ввожу переменную опций разбиения
|
||||||
ConsoleParamsParser @params = new(userInput.Split(' '));
|
List<FileSplitOptions> options = GetSplitOptions(userInput.Split(' '));
|
||||||
|
|
||||||
//Проверяю параметры разбиения
|
|
||||||
//- отключена ли проверка хэша
|
|
||||||
if (@params.HasParam("/NoCheckHash"))
|
|
||||||
options.Add(FileSplitOptions.fsoNoCheckHash);
|
|
||||||
//- нужно ли удалять исходный файл
|
|
||||||
if (@params.HasParam("/DeleteSource"))
|
|
||||||
options.Add(FileSplitOptions.fsoDeleteSourceFileAfterSplit);
|
|
||||||
//- нужно ли шифровать файл информации
|
|
||||||
if (@params.HasParam("/EncryptInfoFile"))
|
|
||||||
options.Add(FileSplitOptions.fsoEncryptInfoFile);
|
|
||||||
|
|
||||||
//Вывожу информацию о выборе параметров
|
//Вывожу информацию о выборе параметров
|
||||||
WriteLine(Localization.InteractiveSplitOptionsResult, userInput);
|
WriteLine(Localization.InteractiveSplitOptionsResult, userInput);
|
||||||
|
|
||||||
/* Выполнение разбиения */
|
/* Выполнение разбиения */
|
||||||
|
//Вывожу информацию о начале работы
|
||||||
|
WriteLine(Localization.MessagePleaseWaitToReady);
|
||||||
|
|
||||||
|
//Выполняю операцию
|
||||||
return DoSplit(fileName, targetDir, partSize, false, options);
|
return DoSplit(fileName, targetDir, partSize, false, options);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Интерактивное соединение файла
|
||||||
|
/// </summary>
|
||||||
|
/// <returns><see cref="FsExitCode"/></returns>
|
||||||
|
public static FsExitCode DoJoinInteractive ()
|
||||||
|
{
|
||||||
|
//Класс локализации
|
||||||
|
string userInput;
|
||||||
|
|
||||||
|
//Обработан ли ввод
|
||||||
|
bool isHandled = false;
|
||||||
|
|
||||||
|
/* Имя файла информации о разбиении */
|
||||||
|
//Выбор имени файла
|
||||||
|
do
|
||||||
|
{
|
||||||
|
//Запрос имени файла
|
||||||
|
WriteLine(Localization.InteractiveJoinFileNameAsk);
|
||||||
|
|
||||||
|
//Считываю имя файла
|
||||||
|
userInput = ReadInput(string.Empty);
|
||||||
|
|
||||||
|
//Если файл не существует
|
||||||
|
if (!File.Exists(userInput))
|
||||||
|
{
|
||||||
|
//- то запрашиваю действие
|
||||||
|
WriteLine(Localization.InteractiveFileNameNotExist);
|
||||||
|
|
||||||
|
//- считываю ответ
|
||||||
|
userInput = ReadInput(string.Empty);
|
||||||
|
|
||||||
|
//- если выбрано не повторять
|
||||||
|
if (userInput.ToLower() != "y")
|
||||||
|
//-- то прерываю операцию
|
||||||
|
return FsExitCode.ecUserAborted;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//В противном случае, считаю ввод корректным
|
||||||
|
isHandled = true;
|
||||||
|
}
|
||||||
|
} while (!isHandled);
|
||||||
|
|
||||||
|
//Ввожу переменную с именем файла
|
||||||
|
string fileName = userInput;
|
||||||
|
|
||||||
|
//Вывожу информацию о выборе файла
|
||||||
|
WriteLine(Localization.InteractiveJoinFileNameResult, fileName);
|
||||||
|
|
||||||
|
/* Целевой файл */
|
||||||
|
|
||||||
|
//Выбор целевого файла
|
||||||
|
do
|
||||||
|
{
|
||||||
|
//Запрос имени файла
|
||||||
|
WriteLine(Localization.InteractiveJoinTargetFileNameAsk);
|
||||||
|
|
||||||
|
//Считываю имя файла
|
||||||
|
userInput = ReadInput(string.Empty);
|
||||||
|
|
||||||
|
//Если файл существует
|
||||||
|
if (File.Exists(userInput))
|
||||||
|
{
|
||||||
|
//- то запрашиваю действие
|
||||||
|
WriteLine(Localization.InteractiveFileNameExist);
|
||||||
|
|
||||||
|
//- считываю ответ
|
||||||
|
userInput = ReadInput(string.Empty);
|
||||||
|
|
||||||
|
//- если выбрано не повторять
|
||||||
|
if (userInput.ToLower() != "y")
|
||||||
|
//-- то прерываю операцию
|
||||||
|
return FsExitCode.ecUserAborted;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//В противном случае, считаю ввод корректным
|
||||||
|
isHandled = true;
|
||||||
|
}
|
||||||
|
} while (!isHandled);
|
||||||
|
|
||||||
|
//Ввожу переменную с именем файла
|
||||||
|
string targetFileName = userInput;
|
||||||
|
|
||||||
|
//Вывожу информацию о выборе целевого файла
|
||||||
|
WriteLine(Localization.InteractiveJoinTargetFileNameResult, fileName);
|
||||||
|
|
||||||
|
/* Опции соединения */
|
||||||
|
//Запрос опций соединения
|
||||||
|
WriteLine(Localization.InteractiveJoinOptionsAsk);
|
||||||
|
|
||||||
|
//Считываю опции соединения
|
||||||
|
userInput = ReadInput(string.Empty);
|
||||||
|
|
||||||
|
//Ввожу переменную опций соединения
|
||||||
|
List<FileJoinOptions> options = GetJoinOptions(userInput.Split(' '));
|
||||||
|
|
||||||
|
//Вывожу информацию о выборе параметров
|
||||||
|
WriteLine(Localization.InteractiveJoinOptionsResult, userInput);
|
||||||
|
|
||||||
|
/* Выполнение соединения */
|
||||||
|
//Вывожу информацию о начале работы
|
||||||
|
WriteLine(Localization.MessagePleaseWaitToReady);
|
||||||
|
|
||||||
|
//Выполняю операцию
|
||||||
|
return DoJoin(fileName, targetFileName, false, options);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Интерактивные опции
|
||||||
|
/// </summary>
|
||||||
|
/// <returns><see cref="FsExitCode"/></returns>
|
||||||
|
public static FsExitCode DoOptionsInteractive ()
|
||||||
|
{
|
||||||
|
//Класс локализации
|
||||||
|
FileSplitterConsoleOptions options = new();
|
||||||
|
|
||||||
|
//Загружаю опции
|
||||||
|
options.Load();
|
||||||
|
|
||||||
|
//Вывожу запрос на изменение настроек
|
||||||
|
WriteLine(Localization.InteractiveOptionsAsk);
|
||||||
|
|
||||||
|
//Считываю опции
|
||||||
|
string userInput = ReadInput(string.Empty);
|
||||||
|
|
||||||
|
//Создаю парсер опций
|
||||||
|
ConsoleParamsParser parser = new(userInput.Split(' '));
|
||||||
|
|
||||||
|
//Сохраняю опции
|
||||||
|
//- язык
|
||||||
|
if (parser.HasParam("language"))
|
||||||
|
{
|
||||||
|
//-- получаю значение языка
|
||||||
|
string language = (parser.GetValue("language") ?? "russian").Trim(new []{'"'});
|
||||||
|
|
||||||
|
//-- и если файл существует
|
||||||
|
if (File.Exists($"languages\\{language}.json"))
|
||||||
|
//--- то устанавливаю его
|
||||||
|
options.Language = language;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Вывожу запрос на подтверждение
|
||||||
|
WriteLine(Localization.InteractiveOptionsConfirm, userInput);
|
||||||
|
|
||||||
|
//Считываю опции
|
||||||
|
userInput = ReadInput(string.Empty);
|
||||||
|
|
||||||
|
//Если не подтверждено
|
||||||
|
if (userInput != "y")
|
||||||
|
//- то прерываю
|
||||||
|
return FsExitCode.ecUserAborted;
|
||||||
|
|
||||||
|
//Сохраняю опции
|
||||||
|
options.Save();
|
||||||
|
|
||||||
|
//Вывожу информацию об успешном сохранении
|
||||||
|
WriteLine(Localization.InteractiveOptionsResult);
|
||||||
|
|
||||||
|
//Вывожу результат
|
||||||
|
return FsExitCode.ecAllDone;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Чтение строкового значения
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="defaultValue">Значение по умолчанию</param>
|
||||||
|
/// <returns>Ввод пользователя в формате <see cref="string"/></returns>
|
||||||
|
private static string ReadInput (string defaultValue = "") => (ReadLine() ?? defaultValue).Trim(new[] { '"' }).ToLower();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Чтение численного значения
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="defaultValue">Значение по умолчанию</param>
|
||||||
|
/// <returns>Ввод пользователя в формате <see cref="long"/></returns>
|
||||||
|
private static long ReadInput (long defaultValue = 0) => TypeConverter.StrToInt64(ReadLine() ?? defaultValue.ToString(), defaultValue);
|
||||||
}
|
}
|
@ -9,7 +9,7 @@
|
|||||||
<AssemblyName>FileSplitter</AssemblyName>
|
<AssemblyName>FileSplitter</AssemblyName>
|
||||||
<PackageId>FileSplitter</PackageId>
|
<PackageId>FileSplitter</PackageId>
|
||||||
<Title>ANB Software File Splitter Console</Title>
|
<Title>ANB Software File Splitter Console</Title>
|
||||||
<Version>2023.04.09</Version>
|
<Version>2023.04.16</Version>
|
||||||
<Authors>Alexander Babaev</Authors>
|
<Authors>Alexander Babaev</Authors>
|
||||||
<Product>ANB Software File Splitter</Product>
|
<Product>ANB Software File Splitter</Product>
|
||||||
<Description>Console App for ANB Software File Splitter. Split and join any file.</Description>
|
<Description>Console App for ANB Software File Splitter. Split and join any file.</Description>
|
||||||
@ -28,7 +28,18 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Folder Include="Classes\" />
|
<None Update="help\english.html">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
|
<None Update="help\russian.html">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
|
<None Update="languages\english.json">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
|
<None Update="languages\russian.json">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
@ -56,18 +56,7 @@ static int FileSplit4Params (ConsoleParamsParser @params)
|
|||||||
//- размер части
|
//- размер части
|
||||||
long partSize = TypeConverter.StrToInt64(@params.GetValue("-ps") ?? string.Empty);
|
long partSize = TypeConverter.StrToInt64(@params.GetValue("-ps") ?? string.Empty);
|
||||||
//- параметры
|
//- параметры
|
||||||
List<FileSplitOptions> options = new();
|
List<FileSplitOptions> options = Executor.GetSplitOptions(@params);
|
||||||
|
|
||||||
//Проверяю параметры разбиения
|
|
||||||
//- отключена ли проверка хэша
|
|
||||||
if (@params.HasParam("/NoCheckHash"))
|
|
||||||
options.Add(FileSplitOptions.fsoNoCheckHash);
|
|
||||||
//- нужно ли удалять исходный файл
|
|
||||||
if (@params.HasParam("/DeleteSource"))
|
|
||||||
options.Add(FileSplitOptions.fsoDeleteSourceFileAfterSplit);
|
|
||||||
//- нужно ли шифровать файл информации
|
|
||||||
if (@params.HasParam("/EncryptInfoFile"))
|
|
||||||
options.Add(FileSplitOptions.fsoEncryptInfoFile);
|
|
||||||
|
|
||||||
//Получаю параметры консоли
|
//Получаю параметры консоли
|
||||||
bool silent = @params.HasParam("--silent");
|
bool silent = @params.HasParam("--silent");
|
||||||
@ -95,24 +84,7 @@ static int FileJoin4Params (ConsoleParamsParser @params)
|
|||||||
//- имя целевого файла
|
//- имя целевого файла
|
||||||
string targetFileName = @params.GetValue("-tfn") ?? string.Empty;
|
string targetFileName = @params.GetValue("-tfn") ?? string.Empty;
|
||||||
//- параметры
|
//- параметры
|
||||||
List<FileJoinOptions> options = new();
|
List<FileJoinOptions> options = Executor.GetJoinOptions(@params);
|
||||||
|
|
||||||
//Проверяю параметры разбиения
|
|
||||||
//- отключена ли проверка хэша
|
|
||||||
if (@params.HasParam("/NoCheckHash"))
|
|
||||||
options.Add(FileJoinOptions.fjoNoCheckHash);
|
|
||||||
//- нужно ли удалять исходные файлы
|
|
||||||
if (@params.HasParam("/DeleteSource"))
|
|
||||||
options.Add(FileJoinOptions.fjoDeleteSourceFilesAfterJoin);
|
|
||||||
//- нужно ли дешифровать файл информации
|
|
||||||
if (@params.HasParam("/DecryptInfoFile"))
|
|
||||||
options.Add(FileJoinOptions.fjoInfoFileIsEncrypted);
|
|
||||||
//- нужно ли отключить проверку версии файла информации
|
|
||||||
if (@params.HasParam("/IgnoreVersion"))
|
|
||||||
options.Add(FileJoinOptions.fjoIgnoreSupportedScriptVersion);
|
|
||||||
//- нужно ли отключить проверку объединённого файла на корректность
|
|
||||||
if (@params.HasParam("/SkipCheck"))
|
|
||||||
options.Add(FileJoinOptions.fjoSkipCheckJoinedFile);
|
|
||||||
|
|
||||||
//Получаю параметры консоли
|
//Получаю параметры консоли
|
||||||
bool silent = @params.HasParam("--silent");
|
bool silent = @params.HasParam("--silent");
|
||||||
|
369
FileSplitter/help/english.html
Normal file
369
FileSplitter/help/english.html
Normal file
@ -0,0 +1,369 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
|
||||||
|
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<title>«ANB Software File Splitter» help</title>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<h1>
|
||||||
|
ANB Software File Splitter
|
||||||
|
</h1>
|
||||||
|
<h2>
|
||||||
|
Version 0.5 (2023.04.16)
|
||||||
|
<br />
|
||||||
|
Copyrights © 2023 by Alewxander Babaev.
|
||||||
|
</h2>
|
||||||
|
|
||||||
|
<hr />
|
||||||
|
|
||||||
|
<a name="toc"></a>
|
||||||
|
<h3>Content</h3>
|
||||||
|
|
||||||
|
<ol>
|
||||||
|
<li>
|
||||||
|
<a href="#description">Description</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="#license">License</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="#split">How to use: Split file</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="#join">How to use: Join Files</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="#options">How to use: Application Parameters</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="#ConsoleParams">How to use: Console Line Parameters</a>
|
||||||
|
</li>
|
||||||
|
</ol>
|
||||||
|
|
||||||
|
<hr />
|
||||||
|
|
||||||
|
<a name="description"></a>
|
||||||
|
<h3>Description</h3>
|
||||||
|
<p>
|
||||||
|
<strong>ANB Software File Splitter</strong> allows you to divide a file into the nth number of files of a given
|
||||||
|
volume without archiving the data, and then assemble it into a single file, if you need it.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
The program works in two modes: 1) using command line parameters; 2) interactive mode.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<hr />
|
||||||
|
<a name="license"></a>
|
||||||
|
<h3>END USER LICENSE AGREEMENT (EULA)</h3>
|
||||||
|
|
||||||
|
<p>(Version 1.0)</p>
|
||||||
|
|
||||||
|
<h4>DEFINITIONS</h4>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
ANB Software File Splitter (hereinafter referred to as "product") - a program and/or a component of the program
|
||||||
|
and/or other (game, image, film, etc.), to which this agreement applies.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
End User (hereinafter referred to as "you" or "user") is a person and/or organization that uses the product,
|
||||||
|
provided under this license.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Alexander Babaev (hereinafter referred to as "Manufacturer") - the person and/or organization that produced the
|
||||||
|
product.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h4>
|
||||||
|
LIMITATIONS
|
||||||
|
</h4>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Some States (districts, regions, states) do not allow the limitation or exclusion of liability for unforeseen
|
||||||
|
damage. If your country (district, region, state) does not imply limitation or exclusion of liability for
|
||||||
|
unforeseen damages, then this agreement cannot apply to you. In this case, refuse to use the product.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Some States (districts, regions, states) do not allow the exclusion of implied warranties. If your country
|
||||||
|
(district, region, state) does not imply the exclusion of implied warranties that this agreement may not apply
|
||||||
|
to you. In this case, refuse to use the product.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h4>
|
||||||
|
SUBJECT OF THE AGREEMENT
|
||||||
|
</h4>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
This agreement is concluded between the Manufacturer of the product and the User of the product. This agreement
|
||||||
|
defines the relationship between the Manufacturer and the User arising from the use of the product.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h4>
|
||||||
|
LICENSE
|
||||||
|
</h4>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
The product is distributed on the principle of "AS-IS" ("AS IS"). The author does not bear ANY RESPONSIBILITY in
|
||||||
|
case this program causes physical, material or any other harm to you and your computer. You install the product
|
||||||
|
at your own risk. The manufacturer and/or Distributor does not bear any responsibility for errors, malfunctions
|
||||||
|
(etc.) caused by the product to your computer.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
You can use this program at your discretion, as well as copy and distribute with a link to the author and the
|
||||||
|
website "https://babaev-an.ru/". You are prohibited from copying, distributing the product without a link to the
|
||||||
|
author and the previously specified site. You are prohibited from copying and using the product if the copy of
|
||||||
|
the product you are installing does not have a link to the author and the previously specified site. You are
|
||||||
|
prohibited from changing the contents of the product, disassembling, disassembling and modifying the product,
|
||||||
|
using its components in other programs without the written agreement of the Manufacturer, removing or correcting
|
||||||
|
any proprietary and/or copyright marks in the product.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
IF YOU DOWNLOAD, COPY THE PRODUCT OR USE IT IN ANY OTHER WAY, YOU HEREBY CONFIRM YOUR AGREEMENT TO COMPLY WITH
|
||||||
|
THE TERMS OF THIS END USER LICENSE AGREEMENT. IF YOU DO NOT AGREE, DO NOT INSTALL, COPY, OR USE THE PRODUCT.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h4>
|
||||||
|
COPYRIGHT
|
||||||
|
</h4>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
The copyright for all copies of the product belongs to the Manufacturer and is protected by the legislation of
|
||||||
|
the Russian Federation and a number of other countries.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h4>
|
||||||
|
LIMITED WARRANTY AND DISCLAIMER
|
||||||
|
</h4>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
You are not given any guarantees. All your possible demands, claims and claims (including on quality) will be
|
||||||
|
UNRECOGNIZED.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h4>
|
||||||
|
LIMITATION OF LIABILITY
|
||||||
|
</h4>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
You are not given any obligations. All your possible requirements will be UNRECOGNIZED.
|
||||||
|
</p>
|
||||||
|
<hr />
|
||||||
|
|
||||||
|
<a name="split"></a>
|
||||||
|
<h3>How to use: Split file</h3>
|
||||||
|
<p>
|
||||||
|
The "File Splitting" operation is used to split a certain file (hereinafter, the source file) into n parts,
|
||||||
|
given size. It requires the following parameters:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<code>-fn="file name"</code> - name of the source file.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<code>-td="path"</code> - the folder where the parts of the file will be saved.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<code>-ps=«number»</code> - the size of a part of the file in bytes.
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
In interactive mode, the user will be interviewed for each parameter.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
The "File Splitting" operation may contain the following additional splitting parameters:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<code>/NoCheckHash</code> - don't check parts for matching checksums.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<code>/DeleteSource</code> - after splitting, the source file is deleted.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<code>/EncryptInfoFile</code> - whether the information file needs to be encrypted.
|
||||||
|
<strong>ATTENTION!</strong> Enabling this parameter obliges you to specify the parameter in the additional
|
||||||
|
assembly parameters during assembly <code>/DecryptInfoFile</code>. Otherwise, you will get <strong> return
|
||||||
|
code 3</strong> when trying assemble the file.
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Parameters are entered separated by a space, both in command-line parameters mode and in interactive mode.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
For example, you need to split the <code>C file:\MyFiles\myBigFile.mp4</code> to 10 MB files and save files
|
||||||
|
partitions to the <code>C folder:\myFilesSplited\</code> by deleting the source code, encrypting the split
|
||||||
|
information file and not giving the user no requests. Then you should run the program in the following way:
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<code>
|
||||||
|
FileSplitter split -fn="C:\myFiles\myBigFile.mp4" -td="C:\myFilesSplited" -ps=10485760 /DeleteSource /EncryptInfoFile --silent
|
||||||
|
</code>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<hr />
|
||||||
|
|
||||||
|
<a name="join"></a>
|
||||||
|
<h3>How to use: Join Files</h3>
|
||||||
|
<p>
|
||||||
|
The "Join files" operation connects the file that was previously split using the "Split File" operation. She
|
||||||
|
demands the following parameters:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<code>-ifn="Имя файла"</code> - the name of the file with information about the split.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<code>-tfn="Путь"</code> - the file to build the split into.
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
In interactive mode, the user will be interviewed for each parameter.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
The "Join Files" operation may contain the following additional assembly parameters:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<code>/NoCheckHash</code> - don't check parts for matching checksums.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<code>/DeleteSource</code> - after joining, the split files are deleted.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<code>/DecryptInfoFile</code> - whether to decrypt the information file. <strong>ATTENTION!</strong>
|
||||||
|
Enabling this parameter obliges you to specify the parameter in the additional splitting parameters when
|
||||||
|
splitting <code>/EncryptInfoFile</code>. Otherwise, you will get <strong> return code 3</strong> when trying
|
||||||
|
joining the file.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<code>/IgnoreVersion</code> - disable checking the version of the information file (NOT RECOMMENDED).
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<code>/SkipCheck</code> - disable checking the collected file for compliance with the original.
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Parameters are entered separated by a space, both in command-line parameters mode and in interactive mode.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
For example, you need to merge the file specified by the information
|
||||||
|
<code>C:\myFilesSplitter\myBigFile.mp4.fsi</code>, to file <code>C:\MyFiles\myBigFile.mp4</code> by deleting the
|
||||||
|
split files, decrypting the split information file and disabling checking the collected file for compliance with
|
||||||
|
the original. Then you should run the program in the following way:
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<code>
|
||||||
|
FileSplitter join -ifn="C:\myFilesSplited\myBigFile.mp4.fsi" -tfn="C:\myFiles\myBigFile.mp4" /DeleteSource /DecryptInfoFile /SkipCheck
|
||||||
|
</code>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<hr />
|
||||||
|
|
||||||
|
<a name="options"></a>
|
||||||
|
<h3>How to use: Application Parameters</h3>
|
||||||
|
<p>
|
||||||
|
The operation "Application Parameters" allows you to configure application parameters and works <strong> only in
|
||||||
|
interactive mode</strong>. It requires the following parameters:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<table style="text-align: center; border: 2px solid black;">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>
|
||||||
|
Parameter
|
||||||
|
</th>
|
||||||
|
<th>
|
||||||
|
Possible values
|
||||||
|
</th>
|
||||||
|
<th>
|
||||||
|
Description
|
||||||
|
</th>
|
||||||
|
<th>
|
||||||
|
Example
|
||||||
|
</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
language
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
String (language file name)
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
Sets the application language
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
language=russian
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<hr />
|
||||||
|
|
||||||
|
<a name="ConsoleParams"></a>
|
||||||
|
<h3>How to use: Console Line Parameters</h3>
|
||||||
|
<p>
|
||||||
|
To use the program in command line parameters mode, run the program by passing command line parameters in the
|
||||||
|
format:
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<code>
|
||||||
|
FileSplitter [OPERATION] [OPERATION PARAMETERS] [ADDITIONAL PARAMETERS] [SILENT MODE]
|
||||||
|
</code>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
[OPERATION] can take the following values:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<code>split</code> - perform <a href="#split">split operation</a>.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<code>join</code> - perform <a href="#join">join operation</a>.
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
[OPERATION PARAMETERS] and [ADDITIONAL PARAMETERS] are described in the corresponding help sections.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
[SILENT MODE] works only in command line parameters mode and is enabled by specifying:
|
||||||
|
</p>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<code>--silent</code> - the presence of this parameter indicates that no requests should be issued to the
|
||||||
|
user (the so-called "Silent mode").
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<p>
|
||||||
|
To turn off the silent mode, simply do not specify this parameter.
|
||||||
|
</p>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
372
FileSplitter/help/russian.html
Normal file
372
FileSplitter/help/russian.html
Normal file
@ -0,0 +1,372 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
|
||||||
|
<html lang="ru" xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<title>Справка по программе «ANB Software Делитель файлов»</title>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<h1>
|
||||||
|
ANB Software Делитель файлов
|
||||||
|
</h1>
|
||||||
|
<h2>
|
||||||
|
Версия 0.5 (2023.04.16)
|
||||||
|
<br />
|
||||||
|
Авторские права © 2023, Александр Бабаев.
|
||||||
|
</h2>
|
||||||
|
|
||||||
|
<hr />
|
||||||
|
|
||||||
|
<a name="toc"></a>
|
||||||
|
<h3>Содержание</h3>
|
||||||
|
|
||||||
|
<ol>
|
||||||
|
<li>
|
||||||
|
<a href="#description">Описание</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="#license">Лицензия</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="#split">Как использовать: Разделение файлов</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="#join">Как использовать: Объединение файлов</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="#options">Как использовать: Параметры приложения</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="#ConsoleParams">Как использовать: Параметры консольной строки</a>
|
||||||
|
</li>
|
||||||
|
</ol>
|
||||||
|
|
||||||
|
<hr />
|
||||||
|
|
||||||
|
<a name="description"></a>
|
||||||
|
<h3>Описание</h3>
|
||||||
|
<p>
|
||||||
|
<strong>ANB Software Делитель Файлов</strong> позволяет разделить файл на n-ое количество файлов заданного
|
||||||
|
объема без архивации данных, а также потом собрать в единый файл, если вам понадобится.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Программа работает в двух режимах: 1) с помощью параметров командной строки; 2) интерактивный режим.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<hr />
|
||||||
|
<a name="license"></a>
|
||||||
|
<h3>ЛИЦЕНЗИОННОЕ СОГЛАШЕНИЕ С КОНЕЧНЫМ ПОЛЬЗОВАТЕЛЕМ (EULA)</h3>
|
||||||
|
|
||||||
|
<p>(Версия 1.0)</p>
|
||||||
|
|
||||||
|
<h4>ОПРЕДЕЛЕНИЯ</h4>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
ANB Software File Splitter (далее "продукт") - программа и/или компонент программы и/или другое (игра,
|
||||||
|
изображение, фильм и т.п.), на которое распространяется данное соглашение.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Конечный пользователь (далее "вы" или "пользователь") - лицо и/или организация, которое(-ая) использует продукт,
|
||||||
|
предоставляемый под этой лицензией.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Александр Бабаев (далее "Производитель") - лицо и/или организация, которое(-ая) произвело продукт.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h4>
|
||||||
|
ОГРАНИЧЕНИЯ
|
||||||
|
</h4>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
В некоторых государствах (районах, областях, штатах) не позволяется ограничение или исключение ответственности
|
||||||
|
за непредвиденный ущерб. Если ваша страна (район, область, штат) не подразумевает ограничение или исключение
|
||||||
|
ответственности за непредвиденный ущерб, то данное соглашение не может применяться к вам. В этом случае
|
||||||
|
откажитесь от использования продукта.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
В некоторых государствах (районах, областях, штатах) не позволяется исключение подразумеваемых гарантий. Если
|
||||||
|
ваша страна (район, область, штат) не подразумевает исключение подразумеваемых гарантий, то данное соглашение не
|
||||||
|
может применяться к вам. В этом случае откажитесь от использования продукта.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h4>
|
||||||
|
ПРЕДМЕТ СОГЛАШЕНИЯ
|
||||||
|
</h4>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Данное соглашение заключается между Производителем продукта и Пользователем продукта. Данное соглашение
|
||||||
|
определяет отношения между Производителем и Пользователем, возникающие при использовании продукта.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h4>
|
||||||
|
ЛИЦЕНЗИЯ
|
||||||
|
</h4>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Продукт распространяется по принципу "AS-IS" ("КАК ЕСТЬ"). Автор не несет НИКАКОЙ ОТВЕТСТВЕННОСТИ в случае
|
||||||
|
нанесения данной программой физического, материального или любого другого вреда вам и вашему компьютеру. Вы на
|
||||||
|
свой страх и риск устанавливаете продукт. Производитель и/или Распространитель не несет(-ут) никакой
|
||||||
|
ответственности за ошибки, неисправности (и т.п.), нанесенные продуктом вашему компьютеру.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Вы можете использовать данную программу на свое усмотрение, а также копировать и распространять со ссылкой на
|
||||||
|
автора и сайт "https://babaev-an.ru/". Вам запрещается копировать, распространять продукт без ссылки на автора и
|
||||||
|
указанный ранее сайт. Вам запрещается копирование и использование продукта, если устанавливаемая вами копия
|
||||||
|
продукта не имеет ссылки на автора и указанный ранее сайт. Вам запрещается изменять содержимое продукта,
|
||||||
|
разбирать, дизассемблировать и изменять продукт, использовать её компоненты в других программах без письменного
|
||||||
|
соглашения Производителя, удалять или исправлять в продукте любые знаки о праве собственности и/или авторском
|
||||||
|
праве на продукт.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
ЕСЛИ ВЫ ЗАГРУЖАЕТЕ, КОПИРУЕТЕ ПРОДУКТ ИЛИ ИСПОЛЬЗУЕТЕ ЕГО КАКИМ-ЛИБО ДРУГИМ СПОСОБОМ, ЭТИМ ВЫ ПОДТВЕРЖДАЕТЕ СВОЕ
|
||||||
|
СОГЛАСИЕ СОБЛЮДАТЬ УСЛОВИЯ ДАННОГО ЛИЦЕНЗИОННОГО СОГЛАШЕНИЯ С КОНЕЧНЫМ ПОЛЬЗОВАТЕЛЕМ. ЕСЛИ ВЫ НЕ СОГЛАСНЫ, НЕ
|
||||||
|
УСТАНАВЛИВАЙТЕ, НЕ КОПИРУЙТЕ И НЕ ИСПОЛЬЗУЙТЕ ПРОДУКТ.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h4>
|
||||||
|
АВТОРСКОЕ ПРАВО
|
||||||
|
</h4>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Авторское право на все копии продукта принадлежат Производителю и защищено законодательством РФ и ряда других
|
||||||
|
стран.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h4>
|
||||||
|
ОГРАНИЧЕННАЯ ГАРАНТИЯ И ПРАВОВАЯ ОГОВОРКА
|
||||||
|
</h4>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Вам не дается никаких гарантий. Все ваши возможные требования, притязания и претензии (в том числе и по
|
||||||
|
качеству) будут НЕПРИЗНАННЫ.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h4>
|
||||||
|
ОГРАНИЧЕНИЕ ОТВЕТСТВЕННОСТИ
|
||||||
|
</h4>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Вам не дается никаких обязательств. Все ваши возможные требования будут НЕПРИЗНАННЫ.
|
||||||
|
</p>
|
||||||
|
<hr />
|
||||||
|
|
||||||
|
<a name="split"></a>
|
||||||
|
<h3>Как использовать: Разделение файлов</h3>
|
||||||
|
<p>
|
||||||
|
Операция «Разделение файлов» служит для разбиения некоторого файла (далее, исходный файл) на n частей, заданного
|
||||||
|
размера. Она требует следующих параметров:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<code>-fn="Имя файла"</code> - имя исходного файла.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<code>-td="Путь"</code> - папка, в которую будут сохранены части файла.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<code>-ps=«ЧИСЛО»></code> - размер части файла в байтах.
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
В интерактивном режиме пользователь будет опрошен по каждому параметру.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Операция «Разделение файлов» может содержать следующие дополнительные параметры разбиения:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<code>/NoCheckHash</code> - не проверять части на совпадение с контрольными суммами.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<code>/DeleteSource</code> - после разбиения удаляется исходный файл.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<code>/EncryptInfoFile</code> - нужно ли шифровать файл информации. <strong>ВНИМАНИЕ!</strong> Включение
|
||||||
|
этого параметра обязывает Вас при сборке указывать в дополнительных параметрах сборки параметр
|
||||||
|
<code>/DecryptInfoFile</code>. В противном случае, вы словите <strong>код возврата 3</strong> при попытке
|
||||||
|
собрать файл.
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Параметры вводятся через пробел, как в режиме параметров командной строки, так и в интерактивномрежиме.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Например, нужно разбить файл <code>C:\myFiles\myBigFile.mp4</code> на файлы размером 10 МБайт и сохранить файлы
|
||||||
|
разбиения в папку <code>C:\myFilesSplited\</code>, удалив исходник, зашифровав файл информации о разбиении и не
|
||||||
|
выдавая пользователю никаких запросов. Тогда вы должны запустить программу следующим способом:
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<code>
|
||||||
|
FileSplitter split -fn="C:\myFiles\myBigFile.mp4" -td="C:\myFilesSplited" -ps=10485760 /DeleteSource /EncryptInfoFile --silent
|
||||||
|
</code>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<hr />
|
||||||
|
|
||||||
|
<a name="join"></a>
|
||||||
|
<h3>Как использовать: Объединение файлов</h3>
|
||||||
|
<p>
|
||||||
|
Операция «Объединение файлов» соединяет разбитый ранее с помощью операции «Разделения файла» файл. Она требует
|
||||||
|
следующих параметров:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<code>-ifn="Имя файла"</code> - имя файла с информацией о разбиении.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<code>-tfn="Путь"</code> - файл, в который нужно собрать разбиение.
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
В интерактивном режиме пользователь будет опрошен по каждому параметру.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Операция «Объединение файлов» может содержать следующие дополнительные параметры сборки:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<code>/NoCheckHash</code> - не проверять части на совпадение с контрольными суммами.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<code>/DeleteSource</code> - после объединения удаляются файлы разбиения.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<code>/DecryptInfoFile</code> - нужно ли дешифровать файл информации. <strong>ВНИМАНИЕ!</strong> Включение
|
||||||
|
этого параметра обязывает Вас при разбивке указывать в дополнительных параметрах разбиения параметр
|
||||||
|
<code>/EncryptInfoFile</code>. В противном случае, вы словите <strong>код возврата 3</strong> при попытке
|
||||||
|
собрать файл.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<code>/IgnoreVersion</code> - отключить проверку версии файла информации (НЕ РЕКОМЕНДУЕТСЯ).
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<code>/SkipCheck</code> - отключить проверку собранного файла на соответствие оригиналу.
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Параметры вводятся через пробел, как в режиме параметров командной строки, так и в интерактивномрежиме.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Например, нужно объединить файл, заданный информацией <code>C:\myFilesSplited\myBigFile.mp4.fsi</code>, в файл
|
||||||
|
<code>C:\myFiles\myBigFile.mp4</code>, удалив файлы разбиения, дешифровав файл информации о разбиении и отключив
|
||||||
|
проверку собранного файла на соответствие оригиналу. Тогда вы должны
|
||||||
|
запустить программу следующим способом:
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<code>
|
||||||
|
FileSplitter join -ifn="C:\myFilesSplited\myBigFile.mp4.fsi" -tfn="C:\myFiles\myBigFile.mp4" /DeleteSource /DecryptInfoFile /SkipCheck
|
||||||
|
</code>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<hr />
|
||||||
|
|
||||||
|
<a name="options"></a>
|
||||||
|
<h3>Как использовать: Параметры приложения</h3>
|
||||||
|
<p>
|
||||||
|
Операция «Параметры приложения» позволяет настроить параметры приложения и работает <strong>только в
|
||||||
|
интерактивном режиме</strong>. Она требует
|
||||||
|
следующих параметров:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<table style="text-align: center; border: 2px solid black;">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>
|
||||||
|
Параметр
|
||||||
|
</th>
|
||||||
|
<th>
|
||||||
|
Возможные значение
|
||||||
|
</th>
|
||||||
|
<th>
|
||||||
|
Описание
|
||||||
|
</th>
|
||||||
|
<th>
|
||||||
|
Пример
|
||||||
|
</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
language
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
Строка (имя файла языка)
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
Задаёт язык приложения
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
language=russian
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<hr />
|
||||||
|
|
||||||
|
<a name="ConsoleParams"></a>
|
||||||
|
<h3>Как использовать: Параметры консольной строки</h3>
|
||||||
|
<p>
|
||||||
|
Для использования программы в режиме параметров командной строки запустите программу, передав параметры
|
||||||
|
командной строки в формате:
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<code>
|
||||||
|
FileSplitter [ОПЕРАЦИЯ] [ПАРАМЕТРЫ ОПЕРАЦИИ] [ДОПОЛНИТЕЛЬНЫЕ ПАРАМЕТРЫ] [ТИХИЙ РЕЖИМ]
|
||||||
|
</code>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
[ОПЕРАЦИЯ] может принимать следующие значения:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<code>split</code> - выполнить <a href="#split">операцию разделения</a>.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<code>join</code> - выполнить <a href="#join">операцию объединения</a>.
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
[ПАРАМЕТРЫ ОПЕРАЦИИ] и [ДОПОЛНИТЕЛЬНЫЕ ПАРАМЕТРЫ] описаны в соответствующих разделах справки.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
[ТИХИЙ РЕЖИМ] работает только в режиме параметров командной строки и включается указанием:
|
||||||
|
</p>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<code>--silent</code> - наличие этого параметра указывает, что не должны выдаваться никакие запросы
|
||||||
|
пользователю (так называемый «Тихий режим»).
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<p>
|
||||||
|
Для выключения тихого режима просто не указывайте этот параметр.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
70
FileSplitter/languages/english.json
Normal file
70
FileSplitter/languages/english.json
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
{
|
||||||
|
//This file was translated with Yandex Translator (https://translate.yandex.ru/)
|
||||||
|
//Application Parameters
|
||||||
|
"AppTitle": "ANB Software File Splitter",
|
||||||
|
"AppVersion": "Version: {0}",
|
||||||
|
"AppCopyrights": "Copyrights (C) {0} by Alexander Babaev.",
|
||||||
|
|
||||||
|
//Messages
|
||||||
|
"MessageNoParametersForSplit": "Split parameters are not set. For information about working with the program, see the file «<program's folder>\\Help\\English.html#ConsoleParams»",
|
||||||
|
"MessageSplitAsk": "Information about splitting file:\n***{0}\n***Size: {1}\n***File hash: {2}\n***It is assumed to split into {3} parts(s)\nDo you want to start split? [Y|y - yes, any other letter - no]",
|
||||||
|
"MessageStartSplit": "The splitting of the file {0} into parts of the size {1} and saving them in the directory {2} is started.",
|
||||||
|
"MessageSplitFilePart": "Processing part {0} of {1}...",
|
||||||
|
"MessageSplitComplete": "File splitting {0} is complete!",
|
||||||
|
"MessageHashCheckStart": "Starting check the hash of the splitting",
|
||||||
|
"MessageHashCheckFail": "Unfortunately, the file \"{0}\" did not pass the hash check!",
|
||||||
|
"MessageHashCheckComplete": "Hash verification is complete!",
|
||||||
|
"MessageJoinAsk": "Do you want to start joining file {0}? [Y|y - yes, any other letter - no]",
|
||||||
|
"MessageStartJoin": "Joining of files specified by the information file {0} into the file {1} has started.",
|
||||||
|
"MessageJoinUnsupportedFile": "Unfortunately, the version of the information file {0} is not supported!",
|
||||||
|
"MessageJoinUnknownFile": "Can't read the information file! Maybe it's encrypted?",
|
||||||
|
"MessageJoinHashError": "Unfortunately, the split files did not pass verification. Perhaps they are damaged?",
|
||||||
|
"MessageJoinCheckError": "Unfortunately, the joined file did not pass the validation of join. Perhaps there were any mistakes?",
|
||||||
|
"MessageJoinFilePart": "Processing part {0} of {1}...",
|
||||||
|
"MessageJoinComplete": "File joining {0} is complete!",
|
||||||
|
"MessagePleaseWaitToReady": "Please wait. Preparations for the operation are underway. This may take a long time, during which the program may seem to hang.",
|
||||||
|
|
||||||
|
//Interactive mode messages
|
||||||
|
"InteractiveStartAsk": "Choose one of the actions:\n* S|s - splitting\n* J|j - joining\n* O|o - program's options\n* E|e - exit\nYour choice:",
|
||||||
|
"InteractiveWrongInput": "Unknown action selected!",
|
||||||
|
"InteractiveOperationFinish": "The operation is completed! Exit code is: {0}",
|
||||||
|
"InteractiveFileNameNotExist": "The file does not exist! Repeat file entry? [Y|y - to repeat, any other letter - to abort operation]",
|
||||||
|
"InteractiveFileNameExist": "The file exists! You need to select a non-existent file! Repeat file entry? [Y|y - to repeat, any other letter - to abort operation]",
|
||||||
|
|
||||||
|
"InteractiveSplitFileNameAsk": "Enter the name of the file to split (or drag it here):",
|
||||||
|
"InteractiveSplitFileNameResult": "File selected for splitting: {0}",
|
||||||
|
"InteractiveSplitTargetDirAsk": "Select the folder where you want to save the parts of the file (or leave it empty to use the folder of the split file):",
|
||||||
|
"InteractiveSplitTargetDirResult": "The split files will be saved in the folder: {0}",
|
||||||
|
"InteractiveSplitPartSizeAsk": "Enter the size of the part (in bytes):",
|
||||||
|
"InteractiveSplitPartSizeAsk2": "You have selected the part size {0}. Is everything right? [Y|y - yes, continue; any other letter - no, repeat input]",
|
||||||
|
"InteractiveSplitPartSizeResult": "Selected part size: {0}",
|
||||||
|
"InteractiveSplitOptionsAsk": "Enter additional splitting parameters (space separator):",
|
||||||
|
"InteractiveSplitOptionsResult": "Additional splitting parameters are selected: [{0}]",
|
||||||
|
|
||||||
|
"InteractiveJoinFileNameAsk": "Enter the name of the split information file (or drag it here):",
|
||||||
|
"InteractiveJoinFileNameResult": "The file selected for the join is: {0}",
|
||||||
|
"InteractiveJoinTargetFileNameAsk": "Select the name and path to the file to be joined (for example, c:\\myFiles\\myFile.txt ):",
|
||||||
|
"InteractiveJoinTargetFileNameResult": "The file will be joined: {0}",
|
||||||
|
"InteractiveJoinOptionsAsk": "Enter additional join parameters (space delimiter):",
|
||||||
|
"InteractiveJoinOptionsResult": "Additional join parameters selected: [{0}]",
|
||||||
|
|
||||||
|
"InteractiveOptionsAsk": "Enter the program parameters (space delimiter):",
|
||||||
|
"InteractiveOptionsConfirm": "Program parameters selected:\n{0}\nDo you confirm them? [Y|y - yes, any other letter - to abort]",
|
||||||
|
"InteractiveOptionsResult": "The parameters are saved! To apply them, you need to restart the program...",
|
||||||
|
|
||||||
|
//Константы размеров
|
||||||
|
"FileSizeStringsByte": "byte",
|
||||||
|
"FileSizeStringsKByte": "KByte",
|
||||||
|
"FileSizeStringsMByte": "MByte",
|
||||||
|
"FileSizeStringsGByte": "GByte",
|
||||||
|
"FileSizeStringsTByte": "TByte",
|
||||||
|
|
||||||
|
//Переводы кодов возврата
|
||||||
|
"ExitCodeNamesAllDone": "Completed successfully",
|
||||||
|
"ExitCodeNamesInfoVersionUnsupported": "The version of the split information file is not supported",
|
||||||
|
"ExitCodeNamesInvalidParameters": "Invalid parameters",
|
||||||
|
"ExitCodeNamesSplitFileHashError": "Error checking the hash sum of split files",
|
||||||
|
"ExitCodeNamesTargetFileCheckError": "Error checking the integrity of joined file",
|
||||||
|
"ExitCodeNamesUnknownInfoFile": "Unknown partitioning information file",
|
||||||
|
"ExitCodeNamesUserAborted": "Aborted by the user"
|
||||||
|
}
|
69
FileSplitter/languages/russian.json
Normal file
69
FileSplitter/languages/russian.json
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
{
|
||||||
|
//Параметры приложения
|
||||||
|
"AppTitle": "ANB Software Делитель файлов",
|
||||||
|
"AppVersion": "Версия: {0}",
|
||||||
|
"AppCopyrights": "Авторские права (C) {0}, Александр Бабаев.",
|
||||||
|
|
||||||
|
//Сообщения
|
||||||
|
"MessageNoParametersForSplit": "Не заданы параметры разбиения. Информацию о работе с программой смотрите в файле «<папка с программой>\\Help\\Russian.html#ConsoleParams»\"",
|
||||||
|
"MessageSplitAsk": "Информация о разбиваемом файле:\n***{0}\n***Размер: {1}\n***Хэш файла: {2}\n***Предполагается разбиение на {3} части(-ей)\nВы хотите начать разбиение? [Y|y - да, Любая другая буква/слово/выражение - нет]",
|
||||||
|
"MessageStartSplit": "Запущено разбиение файла {0} на части размером {1} и сохранением их в директории {2}.",
|
||||||
|
"MessageSplitFilePart": "Идёт обработка части {0} из {1}...",
|
||||||
|
"MessageSplitComplete": "Разбиение файла {0} завершено!",
|
||||||
|
"MessageHashCheckStart": "Начинаю проверку хэша разбиения",
|
||||||
|
"MessageHashCheckFail": "К сожалению, файл \"{0}\" не прошёл проверку хэша!",
|
||||||
|
"MessageHashCheckComplete": "Проверка хэша завершена!",
|
||||||
|
"MessageJoinAsk": "Вы хотите начать сборку файла {0}? [Y|y - да, любая другая буква/слово/выражение - нет]",
|
||||||
|
"MessageStartJoin": "Запущено объединение файлов, заданных файлом информации {0}, в файл {1}.",
|
||||||
|
"MessageJoinUnsupportedFile": "К сожалению, версия файла информации {0} не поддерживается!",
|
||||||
|
"MessageJoinUnknownFile": "Не могу прочитать файл информации! Возможно он зашифрован?",
|
||||||
|
"MessageJoinHashError": "К сожалению, разделённые файлы не прошли проверку. Возможно они повреждены?",
|
||||||
|
"MessageJoinCheckError": "К сожалению, объединённый файл не прошли проверку корректности объединения. Возможно были какие-либо ошибки?",
|
||||||
|
"MessageJoinFilePart": "Идёт обработка части {0} из {1}...",
|
||||||
|
"MessageJoinComplete": "Объединение файла {0} завершено!",
|
||||||
|
"MessagePleaseWaitToReady": "Пожалуйста, подождите. Идёт подготовка к операции. Это может занять длительное время, в течении которого программа может казаться зависшей.",
|
||||||
|
|
||||||
|
//Сообщения интерактивного режима
|
||||||
|
"InteractiveStartAsk": "Выберете одно из действий:\n* S|s - разбиение\n* J|j - объединение\n* O|o - параметры программы\n* E|e - выход\nВаш выбор:",
|
||||||
|
"InteractiveWrongInput": "Выбрано неизвестное действие!",
|
||||||
|
"InteractiveOperationFinish": "Операция завершена с кодом: {0}",
|
||||||
|
"InteractiveFileNameNotExist": "Файл не существует! Повторить ввод файла? [Y|y - для повтора, любая другая буква - прерывание операции]",
|
||||||
|
"InteractiveFileNameExist": "Файл существует! Нужно выбрать несуществующий файл! Повторить ввод файла? [Y|y - для повтора, любая другая буква - прерывание операции]",
|
||||||
|
|
||||||
|
"InteractiveSplitFileNameAsk": "Введите имя разбиваемого файла (или перетащите его сюда):",
|
||||||
|
"InteractiveSplitFileNameResult": "Для разбиения выбран файл: {0}",
|
||||||
|
"InteractiveSplitTargetDirAsk": "Выберете папку, куда следует сохранить части файла (или оставьте пустым, чтобы использовать папку разбиваемого файла):",
|
||||||
|
"InteractiveSplitTargetDirResult": "Файлы разбиения будут сохранены в папке: {0}",
|
||||||
|
"InteractiveSplitPartSizeAsk": "Введите размер части (в байтах):",
|
||||||
|
"InteractiveSplitPartSizeAsk2": "Вы выбрали размер части {0}. Всё правильно? [Y|y - да, продолжить, любая другая буква - нет, повторить ввод]",
|
||||||
|
"InteractiveSplitPartSizeResult": "Выбран размер части: {0}",
|
||||||
|
"InteractiveSplitOptionsAsk": "Введите дополнительные параметры разбиения (разделитель - пробел):",
|
||||||
|
"InteractiveSplitOptionsResult": "Выбраны дополнительные параметры разбиения: [{0}]",
|
||||||
|
|
||||||
|
"InteractiveJoinFileNameAsk": "Введите имя файла информации о разбиении (или перетащите его сюда):",
|
||||||
|
"InteractiveJoinFileNameResult": "Для сборки выбран файл: {0}",
|
||||||
|
"InteractiveJoinTargetFileNameAsk": "Выберите имя и путь к собираемому файлу (например, c:\\myFiles\\myFile.txt):",
|
||||||
|
"InteractiveJoinTargetFileNameResult": "Будет собран файл: {0}",
|
||||||
|
"InteractiveJoinOptionsAsk": "Введите дополнительные параметры соединения (разделитель - пробел):",
|
||||||
|
"InteractiveJoinOptionsResult": "Выбраны дополнительные параметры соединения: [{0}]",
|
||||||
|
|
||||||
|
"InteractiveOptionsAsk": "Введите параметры программы (разделитель - пробел):",
|
||||||
|
"InteractiveOptionsConfirm": "Выбраны параметры программы:\n{0}\nВы их подтверждаете? [Y|y - да, любая другая буква - выход]",
|
||||||
|
"InteractiveOptionsResult": "Параметры сохранены! Для их применения требуется перезапуск программы...",
|
||||||
|
|
||||||
|
//Константы размеров
|
||||||
|
"FileSizeStringsByte": "байт",
|
||||||
|
"FileSizeStringsKByte": "Кб",
|
||||||
|
"FileSizeStringsMByte": "Мб",
|
||||||
|
"FileSizeStringsGByte": "Гб",
|
||||||
|
"FileSizeStringsTByte": "Тб",
|
||||||
|
|
||||||
|
//Переводы кодов возврата
|
||||||
|
"ExitCodeNamesAllDone": "Успешно завершено",
|
||||||
|
"ExitCodeNamesInfoVersionUnsupported": "Версия файла информации о разбиении не поддерживается",
|
||||||
|
"ExitCodeNamesInvalidParameters": "Неверные параметры",
|
||||||
|
"ExitCodeNamesSplitFileHashError": "Ошибка проверки хэш-суммы разделённых файлов",
|
||||||
|
"ExitCodeNamesTargetFileCheckError": "Ошибка проверки целостности собираемого файла",
|
||||||
|
"ExitCodeNamesUnknownInfoFile": "Неизвестный файл информации о разбиении",
|
||||||
|
"ExitCodeNamesUserAborted": "Прервано пользователем"
|
||||||
|
}
|
@ -1,7 +1,13 @@
|
|||||||
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
|
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
|
||||||
|
<s:Boolean x:Key="/Default/UserDictionary/Words/=Babaev/@EntryIndexedValue">True</s:Boolean>
|
||||||
|
<s:Boolean x:Key="/Default/UserDictionary/Words/=Yandex/@EntryIndexedValue">True</s:Boolean>
|
||||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=_0411_0430_0431_0430_0435_0432/@EntryIndexedValue">True</s:Boolean>
|
<s:Boolean x:Key="/Default/UserDictionary/Words/=_0411_0430_0431_0430_0435_0432/@EntryIndexedValue">True</s:Boolean>
|
||||||
|
<s:Boolean x:Key="/Default/UserDictionary/Words/=_0418_0434_0451_0442/@EntryIndexedValue">True</s:Boolean>
|
||||||
|
<s:Boolean x:Key="/Default/UserDictionary/Words/=_041F_0430_0440_0441_0435_0440/@EntryIndexedValue">True</s:Boolean>
|
||||||
|
<s:Boolean x:Key="/Default/UserDictionary/Words/=_0434_0438_0437_0430_0441_0441_0435_043C_0431_043B_0438_0440_043E_0432_0430_0442_044C/@EntryIndexedValue">True</s:Boolean>
|
||||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=_043E_0431_044A_0435_0434_0438_043D_0451_043D_043D_043E_0433_043E/@EntryIndexedValue">True</s:Boolean>
|
<s:Boolean x:Key="/Default/UserDictionary/Words/=_043E_0431_044A_0435_0434_0438_043D_0451_043D_043D_043E_0433_043E/@EntryIndexedValue">True</s:Boolean>
|
||||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=_043E_0431_044A_0435_0434_0438_043D_0451_043D_043D_044B_0439/@EntryIndexedValue">True</s:Boolean>
|
<s:Boolean x:Key="/Default/UserDictionary/Words/=_043E_0431_044A_0435_0434_0438_043D_0451_043D_043D_044B_0439/@EntryIndexedValue">True</s:Boolean>
|
||||||
|
<s:Boolean x:Key="/Default/UserDictionary/Words/=_043F_0440_043E_0448_0451_043B/@EntryIndexedValue">True</s:Boolean>
|
||||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=_0440_0430_0437_0434_0435_043B_0451_043D_043D_044B_0435/@EntryIndexedValue">True</s:Boolean>
|
<s:Boolean x:Key="/Default/UserDictionary/Words/=_0440_0430_0437_0434_0435_043B_0451_043D_043D_044B_0435/@EntryIndexedValue">True</s:Boolean>
|
||||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=_0440_0430_0437_0434_0435_043B_0451_043D_043D_044B_043C_0438/@EntryIndexedValue">True</s:Boolean>
|
<s:Boolean x:Key="/Default/UserDictionary/Words/=_0440_0430_0437_0434_0435_043B_0451_043D_043D_044B_043C_0438/@EntryIndexedValue">True</s:Boolean>
|
||||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=_0440_0430_0437_0434_0435_043B_0451_043D_043D_044B_0445/@EntryIndexedValue">True</s:Boolean>
|
<s:Boolean x:Key="/Default/UserDictionary/Words/=_0440_0430_0437_0434_0435_043B_0451_043D_043D_044B_0445/@EntryIndexedValue">True</s:Boolean>
|
||||||
|
64
FileSplitterShared/Classes/FileSplitterConsoleOptions.cs
Normal file
64
FileSplitterShared/Classes/FileSplitterConsoleOptions.cs
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
using Newtonsoft.Json;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace FileSplitter.Shared.Classes;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Параметры консоли программы
|
||||||
|
/// </summary>
|
||||||
|
public sealed class FileSplitterConsoleOptions
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Конструктор
|
||||||
|
/// </summary>
|
||||||
|
public FileSplitterConsoleOptions () => Language = "russian";
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Язык приложения
|
||||||
|
/// </summary>
|
||||||
|
public string Language { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Сохранение параметров в файл
|
||||||
|
/// </summary>
|
||||||
|
public void Save ()
|
||||||
|
{
|
||||||
|
//Открываю файл
|
||||||
|
StreamWriter writer = new("settings.json", Encoding.UTF8,
|
||||||
|
new() { Access = FileAccess.Write, Mode = FileMode.Create });
|
||||||
|
|
||||||
|
//Записываю файл
|
||||||
|
writer.WriteLine(JsonConvert.SerializeObject(this));
|
||||||
|
|
||||||
|
//Закрываю файл
|
||||||
|
writer.Close();
|
||||||
|
//Освобождаю память
|
||||||
|
writer.Dispose();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Загрузка параметров из файла
|
||||||
|
/// </summary>
|
||||||
|
public void Load ()
|
||||||
|
{
|
||||||
|
//Если файла опций не существует
|
||||||
|
if (!File.Exists("settings.json"))
|
||||||
|
//- то создаём
|
||||||
|
Save();
|
||||||
|
|
||||||
|
//Открываю файл
|
||||||
|
StreamReader reader = new("settings.json", Encoding.UTF8);
|
||||||
|
|
||||||
|
//Читаю файл
|
||||||
|
FileSplitterConsoleOptions options =
|
||||||
|
JsonConvert.DeserializeObject<FileSplitterConsoleOptions>(reader.ReadLine() ?? "[]") ?? new();
|
||||||
|
|
||||||
|
//- закрываю файл
|
||||||
|
reader.Close();
|
||||||
|
//- освобождаю память
|
||||||
|
reader.Dispose();
|
||||||
|
|
||||||
|
//Устанавливаю параметры
|
||||||
|
Language = options.Language;
|
||||||
|
}
|
||||||
|
}
|
134
FileSplitterShared/Classes/FileSplitterLanguage.cs
Normal file
134
FileSplitterShared/Classes/FileSplitterLanguage.cs
Normal file
@ -0,0 +1,134 @@
|
|||||||
|
namespace FileSplitter.Shared.Classes;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Класс json-представления языкового файла программы
|
||||||
|
/// </summary>
|
||||||
|
public class FileSplitterLanguage
|
||||||
|
{
|
||||||
|
//Параметры приложения
|
||||||
|
public FileSplitterLanguage()
|
||||||
|
{
|
||||||
|
AppTitle = string.Empty;
|
||||||
|
AppVersion = string.Empty;
|
||||||
|
AppCopyrights = string.Empty;
|
||||||
|
MessageNoParametersForSplit = string.Empty;
|
||||||
|
MessageSplitAsk = string.Empty;
|
||||||
|
MessageStartSplit = string.Empty;
|
||||||
|
MessageSplitFilePart = string.Empty;
|
||||||
|
MessageSplitComplete = string.Empty;
|
||||||
|
MessageHashCheckStart = string.Empty;
|
||||||
|
MessageHashCheckFail = string.Empty;
|
||||||
|
MessageHashCheckComplete = string.Empty;
|
||||||
|
MessageJoinAsk = string.Empty;
|
||||||
|
MessageStartJoin = string.Empty;
|
||||||
|
MessageJoinUnsupportedFile = string.Empty;
|
||||||
|
MessageJoinUnknownFile = string.Empty;
|
||||||
|
MessageJoinHashError = string.Empty;
|
||||||
|
MessageJoinCheckError = string.Empty;
|
||||||
|
MessageJoinFilePart = string.Empty;
|
||||||
|
MessageJoinComplete = string.Empty;
|
||||||
|
MessagePleaseWaitToReady = string.Empty;
|
||||||
|
InteractiveStartAsk = string.Empty;
|
||||||
|
InteractiveWrongInput = string.Empty;
|
||||||
|
InteractiveOperationFinish = string.Empty;
|
||||||
|
InteractiveFileNameNotExist = string.Empty;
|
||||||
|
InteractiveFileNameExist = string.Empty;
|
||||||
|
InteractiveSplitFileNameAsk = string.Empty;
|
||||||
|
InteractiveSplitFileNameResult = string.Empty;
|
||||||
|
InteractiveSplitTargetDirAsk = string.Empty;
|
||||||
|
InteractiveSplitTargetDirResult = string.Empty;
|
||||||
|
InteractiveSplitPartSizeAsk = string.Empty;
|
||||||
|
InteractiveSplitPartSizeAsk2 = string.Empty;
|
||||||
|
InteractiveSplitPartSizeResult = string.Empty;
|
||||||
|
InteractiveSplitOptionsAsk = string.Empty;
|
||||||
|
InteractiveSplitOptionsResult = string.Empty;
|
||||||
|
InteractiveJoinFileNameAsk = string.Empty;
|
||||||
|
InteractiveJoinFileNameResult = string.Empty;
|
||||||
|
InteractiveJoinTargetFileNameAsk = string.Empty;
|
||||||
|
InteractiveJoinTargetFileNameResult = string.Empty;
|
||||||
|
InteractiveJoinOptionsAsk = string.Empty;
|
||||||
|
InteractiveJoinOptionsResult = string.Empty;
|
||||||
|
InteractiveOptionsAsk = string.Empty;
|
||||||
|
InteractiveOptionsConfirm = string.Empty;
|
||||||
|
InteractiveOptionsResult = string.Empty;
|
||||||
|
FileSizeStringsByte = string.Empty;
|
||||||
|
FileSizeStringsKByte = string.Empty;
|
||||||
|
FileSizeStringsMByte = string.Empty;
|
||||||
|
FileSizeStringsGByte = string.Empty;
|
||||||
|
FileSizeStringsTByte = string.Empty;
|
||||||
|
ExitCodeNamesAllDone = string.Empty;
|
||||||
|
ExitCodeNamesInfoVersionUnsupported = string.Empty;
|
||||||
|
ExitCodeNamesInvalidParameters = string.Empty;
|
||||||
|
ExitCodeNamesSplitFileHashError = string.Empty;
|
||||||
|
ExitCodeNamesTargetFileCheckError = string.Empty;
|
||||||
|
ExitCodeNamesUnknownInfoFile = string.Empty;
|
||||||
|
ExitCodeNamesUserAborted = string.Empty;
|
||||||
|
}
|
||||||
|
|
||||||
|
public string AppTitle { get; set; }
|
||||||
|
public string AppVersion { get; set; }
|
||||||
|
public string AppCopyrights { get; set; }
|
||||||
|
|
||||||
|
//Сообщения
|
||||||
|
public string MessageNoParametersForSplit { get; set; }
|
||||||
|
public string MessageSplitAsk { get; set; }
|
||||||
|
public string MessageStartSplit { get; set; }
|
||||||
|
public string MessageSplitFilePart { get; set; }
|
||||||
|
public string MessageSplitComplete { get; set; }
|
||||||
|
public string MessageHashCheckStart { get; set; }
|
||||||
|
public string MessageHashCheckFail { get; set; }
|
||||||
|
public string MessageHashCheckComplete { get; set; }
|
||||||
|
public string MessageJoinAsk { get; set; }
|
||||||
|
public string MessageStartJoin { get; set; }
|
||||||
|
public string MessageJoinUnsupportedFile { get; set; }
|
||||||
|
public string MessageJoinUnknownFile { get; set; }
|
||||||
|
public string MessageJoinHashError { get; set; }
|
||||||
|
public string MessageJoinCheckError { get; set; }
|
||||||
|
public string MessageJoinFilePart { get; set; }
|
||||||
|
public string MessageJoinComplete { get; set; }
|
||||||
|
public string MessagePleaseWaitToReady { get; set; }
|
||||||
|
|
||||||
|
//Сообщения интерактивного режима
|
||||||
|
public string InteractiveStartAsk { get; set; }
|
||||||
|
public string InteractiveWrongInput { get; set; }
|
||||||
|
public string InteractiveOperationFinish { get; set; }
|
||||||
|
public string InteractiveFileNameNotExist { get; set; }
|
||||||
|
public string InteractiveFileNameExist { get; set; }
|
||||||
|
|
||||||
|
public string InteractiveSplitFileNameAsk { get; set; }
|
||||||
|
public string InteractiveSplitFileNameResult { get; set; }
|
||||||
|
public string InteractiveSplitTargetDirAsk { get; set; }
|
||||||
|
public string InteractiveSplitTargetDirResult { get; set; }
|
||||||
|
public string InteractiveSplitPartSizeAsk { get; set; }
|
||||||
|
public string InteractiveSplitPartSizeAsk2 { get; set; }
|
||||||
|
public string InteractiveSplitPartSizeResult { get; set; }
|
||||||
|
public string InteractiveSplitOptionsAsk { get; set; }
|
||||||
|
public string InteractiveSplitOptionsResult { get; set; }
|
||||||
|
|
||||||
|
public string InteractiveJoinFileNameAsk { get; set; }
|
||||||
|
public string InteractiveJoinFileNameResult { get; set; }
|
||||||
|
public string InteractiveJoinTargetFileNameAsk { get; set; }
|
||||||
|
public string InteractiveJoinTargetFileNameResult { get; set; }
|
||||||
|
public string InteractiveJoinOptionsAsk { get; set; }
|
||||||
|
public string InteractiveJoinOptionsResult { get; set; }
|
||||||
|
|
||||||
|
public string InteractiveOptionsAsk { get; set; }
|
||||||
|
public string InteractiveOptionsConfirm { get; set; }
|
||||||
|
public string InteractiveOptionsResult { get; set; }
|
||||||
|
|
||||||
|
//Константы размеров
|
||||||
|
public string FileSizeStringsByte { get; set; }
|
||||||
|
public string FileSizeStringsKByte { get; set; }
|
||||||
|
public string FileSizeStringsMByte { get; set; }
|
||||||
|
public string FileSizeStringsGByte { get; set; }
|
||||||
|
public string FileSizeStringsTByte { get; set; }
|
||||||
|
|
||||||
|
//Переводы кодов возврата
|
||||||
|
public string ExitCodeNamesAllDone { get; set; }
|
||||||
|
public string ExitCodeNamesInfoVersionUnsupported { get; set; }
|
||||||
|
public string ExitCodeNamesInvalidParameters { get; set; }
|
||||||
|
public string ExitCodeNamesSplitFileHashError { get; set; }
|
||||||
|
public string ExitCodeNamesTargetFileCheckError { get; set; }
|
||||||
|
public string ExitCodeNamesUnknownInfoFile { get; set; }
|
||||||
|
public string ExitCodeNamesUserAborted { get; set; }
|
||||||
|
}
|
@ -1,62 +1,117 @@
|
|||||||
using FileSplitter.Shared.Enums;
|
using FileSplitter.Shared.Enums;
|
||||||
|
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
namespace FileSplitter.Shared.Classes;
|
namespace FileSplitter.Shared.Classes;
|
||||||
|
|
||||||
public static class Localization
|
public static class Localization
|
||||||
{
|
{
|
||||||
|
//Содержимое языкового файла
|
||||||
|
private static readonly FileSplitterLanguage Language;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Конструктор
|
||||||
|
/// </summary>
|
||||||
|
static Localization()
|
||||||
|
{
|
||||||
|
//Создаю опции приложения
|
||||||
|
FileSplitterConsoleOptions options = new();
|
||||||
|
//- и загружаю их
|
||||||
|
options.Load();
|
||||||
|
|
||||||
|
//Язык приложения
|
||||||
|
string language = options.Language;
|
||||||
|
|
||||||
|
//Если файла языка не существует
|
||||||
|
if (!File.Exists($"languages\\{language}.json"))
|
||||||
|
//- то используем русский
|
||||||
|
language = "russian";
|
||||||
|
|
||||||
|
//Читаю файл
|
||||||
|
string languageContent = File.ReadAllText($"languages\\{language}.json");
|
||||||
|
|
||||||
|
//Загружаю парсер
|
||||||
|
Language = JsonConvert.DeserializeObject<FileSplitterLanguage>(languageContent) ?? new ();
|
||||||
|
|
||||||
|
//Задаю массивы
|
||||||
|
//- размеров файлов
|
||||||
|
FileSizeStrings = new[]
|
||||||
|
{
|
||||||
|
Language.FileSizeStringsByte,
|
||||||
|
Language.FileSizeStringsKByte,
|
||||||
|
Language.FileSizeStringsMByte,
|
||||||
|
Language.FileSizeStringsGByte,
|
||||||
|
Language.FileSizeStringsTByte
|
||||||
|
};
|
||||||
|
|
||||||
|
//- кодов ответов
|
||||||
|
ExitCodeNames = new()
|
||||||
|
{
|
||||||
|
(FsExitCode.ecAllDone, Language.ExitCodeNamesAllDone),
|
||||||
|
(FsExitCode.ecInvalidParameters, Language.ExitCodeNamesInvalidParameters),
|
||||||
|
(FsExitCode.ecUserAborted, Language.ExitCodeNamesUserAborted),
|
||||||
|
(FsExitCode.ecUnknownInfoFile, Language.ExitCodeNamesUnknownInfoFile),
|
||||||
|
(FsExitCode.ecInfoVersionUnsupported, Language.ExitCodeNamesInfoVersionUnsupported),
|
||||||
|
(FsExitCode.ecSplitFileHashError, Language.ExitCodeNamesSplitFileHashError),
|
||||||
|
(FsExitCode.ecTargetFileCheckError, Language.ExitCodeNamesTargetFileCheckError)
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
//Параметры приложения
|
//Параметры приложения
|
||||||
public const string AppTitle = "ANB Software Делитель файлов";
|
public static string AppTitle => Language.AppTitle;
|
||||||
public const string AppVersion = "Версия: {0}";
|
public static string AppVersion => Language.AppVersion;
|
||||||
public const string AppCopyrights = "Авторские права (C) {0}, Александр Бабаев.";
|
public static string AppCopyrights => Language.AppCopyrights;
|
||||||
|
|
||||||
//Сообщения
|
//Сообщения
|
||||||
public const string MessageNoParametersForSplit =
|
public static string MessageNoParametersForSplit => Language.MessageNoParametersForSplit;
|
||||||
"Не заданы параметры разбиения. Информацию о работе с программой смотрите в файле \"Help\\Russian\\Console.html\"";
|
public static string MessageSplitAsk => Language.MessageSplitAsk;
|
||||||
public const string MessageSplitAsk =
|
public static string MessageStartSplit => Language.MessageStartSplit;
|
||||||
"Информация о разбиваемом файле:\n***{0}\n***Размер: {1}\n***Хэш файла: {2}\n***Предполагается разбиение на {3} части(-ей)\nВы хотите начать разбиение? [Y|y - да, Любая другая буква/слово/выражение - нет]";
|
public static string MessageSplitFilePart => Language.MessageSplitFilePart;
|
||||||
public const string MessageStartSplit = "Запущено разбиение файла {0} на части размером {1} и сохранением их в директории {2}.";
|
public static string MessageSplitComplete => Language.MessageSplitComplete;
|
||||||
public const string MessageSplitFilePart = "Идёт обработка части {0} из {1}...";
|
public static string MessageHashCheckStart => Language.MessageHashCheckStart;
|
||||||
public const string MessageSplitComplete = "Разбиение файла {0} завершено!";
|
public static string MessageHashCheckFail => Language.MessageHashCheckFail;
|
||||||
public const string MessageHashCheckStart = "Начинаю проверку хэша разбиения";
|
public static string MessageHashCheckComplete => Language.MessageHashCheckComplete;
|
||||||
public const string MessageHashCheckFail = "К сожалению, файл \"{0}\" не прошёл проверку хэша!";
|
public static string MessageJoinAsk => Language.MessageJoinAsk;
|
||||||
public const string MessageHashCheckComplete = "Проверка хэша завершена!";
|
public static string MessageStartJoin => Language.MessageStartJoin;
|
||||||
public const string MessageJoinAsk = "Вы хотите начать сборку файла {0}? [Y|y - да, любая другая буква/слово/выражение - нет]";
|
public static string MessageJoinUnsupportedFile => Language.MessageJoinUnsupportedFile;
|
||||||
public const string MessageStartJoin = "Запущено объединение файлов, заданных файлом информации {0}, в файл {1}.";
|
public static string MessageJoinUnknownFile => Language.MessageJoinUnknownFile;
|
||||||
public const string MessageJoinUnsupportedFile = "К сожалению, версия файла информации {0} не поддерживается!";
|
public static string MessageJoinHashError => Language.MessageJoinHashError;
|
||||||
public const string MessageJoinUnknownFile = "Не могу прочитать файл информации! Возможно он зашифрован?";
|
public static string MessageJoinCheckError => Language.MessageJoinCheckError;
|
||||||
public const string MessageJoinHashError = "К сожалению, разделённые файлы не прошли проверку. Возможно они повреждены?";
|
public static string MessageJoinFilePart => Language.MessageJoinFilePart;
|
||||||
public const string MessageJoinCheckError =
|
public static string MessageJoinComplete => Language.MessageJoinComplete;
|
||||||
"К сожалению, объединённый файл не прошли проверку корректности объединения. Возможно были какие-либо ошибки?";
|
public static string MessagePleaseWaitToReady => Language.MessagePleaseWaitToReady;
|
||||||
public const string MessageJoinFilePart = "Идёт обработка части {0} из {1}...";
|
|
||||||
public const string MessageJoinComplete = "Объединение файла {0} завершено!";
|
|
||||||
|
|
||||||
//Сообщения интерактивного режима
|
//Сообщения интерактивного режима
|
||||||
public const string InteractiveStartAsk = "Выберете одно из действий:\n* S|s - разбиение\n* J|j - объединение\n* E|e - выход\nВаш выбор:";
|
public static string InteractiveStartAsk => Language.InteractiveStartAsk;
|
||||||
public const string InteractiveWrongInput = "Выбрано неизвестное действие!";
|
public static string InteractiveWrongInput => Language.InteractiveWrongInput;
|
||||||
public const string InteractiveOperationFinish = "Операция завершена с кодом: {0}";
|
public static string InteractiveOperationFinish => Language.InteractiveOperationFinish;
|
||||||
public const string InteractiveSplitFileNameAsk = "Введите имя разбиваемого файла (или перетащите его сюда):";
|
public static string InteractiveFileNameNotExist => Language.InteractiveFileNameNotExist;
|
||||||
public const string InteractiveFileNameNotExist = "Файл не существует! Повторить ввод файла? [Y|y - для повтора, любая другая буква - прерывание операции]";
|
public static string InteractiveFileNameExist => Language.InteractiveFileNameExist;
|
||||||
public const string InteractiveSplitFileNameResult = "Для разбиения выбран файл: {0}";
|
|
||||||
public const string InteractiveSplitTargetDirAsk = "Выберете папку, куда следует сохранить части файла (или оставьте пустым, чтобы использовать папку разбиваемого файла):";
|
public static string InteractiveSplitFileNameAsk => Language.InteractiveSplitFileNameAsk;
|
||||||
public const string InteractiveSplitTargetDirResult = "Файлы разбиения будут сохранены в папке: {0}";
|
public static string InteractiveSplitFileNameResult => Language.InteractiveSplitFileNameResult;
|
||||||
public const string InteractiveSplitPartSizeAsk = "Введите размер части (в байтах):";
|
public static string InteractiveSplitTargetDirAsk => Language.InteractiveSplitTargetDirAsk;
|
||||||
public const string InteractiveSplitPartSizeAsk2 = "Вы выбрали размер части {0}. Всё правильно? [Y|y - да, продолжить, любая другая буква - нет, повторить ввод]";
|
public static string InteractiveSplitTargetDirResult => Language.InteractiveSplitTargetDirResult;
|
||||||
public const string InteractiveSplitPartSizeResult = "Выбран размер части: {0}";
|
public static string InteractiveSplitPartSizeAsk => Language.InteractiveSplitPartSizeAsk;
|
||||||
public const string InteractiveSplitOptionsAsk = "Введите дополнительные параметры разбиения (разделитель - пробел):";
|
public static string InteractiveSplitPartSizeAsk2 => Language.InteractiveSplitPartSizeAsk2;
|
||||||
public const string InteractiveSplitOptionsResult = "Выбраны дополнительные параметры: [{0}]";
|
public static string InteractiveSplitPartSizeResult => Language.InteractiveSplitPartSizeResult;
|
||||||
|
public static string InteractiveSplitOptionsAsk => Language.InteractiveSplitOptionsAsk;
|
||||||
|
public static string InteractiveSplitOptionsResult => Language.InteractiveSplitOptionsResult;
|
||||||
|
|
||||||
|
public static string InteractiveJoinFileNameAsk => Language.InteractiveJoinFileNameAsk;
|
||||||
|
public static string InteractiveJoinFileNameResult => Language.InteractiveJoinFileNameResult;
|
||||||
|
public static string InteractiveJoinTargetFileNameAsk => Language.InteractiveJoinTargetFileNameAsk;
|
||||||
|
public static string InteractiveJoinTargetFileNameResult => Language.InteractiveJoinTargetFileNameResult;
|
||||||
|
public static string InteractiveJoinOptionsAsk => Language.InteractiveJoinOptionsAsk;
|
||||||
|
public static string InteractiveJoinOptionsResult => Language.InteractiveJoinOptionsResult;
|
||||||
|
|
||||||
|
public static string InteractiveOptionsAsk => Language.InteractiveOptionsAsk;
|
||||||
|
public static string InteractiveOptionsConfirm => Language.InteractiveOptionsConfirm;
|
||||||
|
public static string InteractiveOptionsResult => Language.InteractiveOptionsResult;
|
||||||
|
|
||||||
//Константы размеров
|
//Константы размеров
|
||||||
public static readonly string[] FileSizeStrings = { "байт", "Кб", "Мб", "Гб", "Тб" };
|
public static string[] FileSizeStrings { get; }
|
||||||
|
|
||||||
//Переводы кодов возврата
|
//Переводы кодов возврата
|
||||||
public static readonly List<(FsExitCode, string)> ExitCodeNames = new()
|
public static List<(FsExitCode, string)> ExitCodeNames { get; }
|
||||||
{
|
|
||||||
(FsExitCode.ecAllDone, "Успешно завершено"),
|
|
||||||
(FsExitCode.ecInvalidParameters, "Неверные параметры"),
|
|
||||||
(FsExitCode.ecUserAborted, "Прервано пользователем"),
|
|
||||||
(FsExitCode.ecUnknownInfoFile, "Неизвестный файл информации о разбиении"),
|
|
||||||
(FsExitCode.ecInfoVersionUnsupported, "Версия файла информации о разбиении не поддерживается"),
|
|
||||||
(FsExitCode.ecSplitFileHashError, "Ошибка проверки хэш-суммы разделённых файлов"),
|
|
||||||
(FsExitCode.ecTargetFileCheckError, "Ошибка проверки целостности собираемого файла")
|
|
||||||
};
|
|
||||||
}
|
}
|
@ -6,6 +6,16 @@
|
|||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
<AssemblyName>FileSplitterShared</AssemblyName>
|
<AssemblyName>FileSplitterShared</AssemblyName>
|
||||||
<RootNamespace>FileSplitter.Shared</RootNamespace>
|
<RootNamespace>FileSplitter.Shared</RootNamespace>
|
||||||
|
<Title>FileSplitted Shared Library</Title>
|
||||||
|
<Version>2023.04.16</Version>
|
||||||
|
<Authors>Alexander Babaev</Authors>
|
||||||
|
<Company />
|
||||||
|
<Product>ANB Software FileSplitter</Product>
|
||||||
|
<Description>Support library for ANB Software FileSplitter</Description>
|
||||||
|
<Copyright>Alexander Babaev</Copyright>
|
||||||
|
<PackageProjectUrl>https://git.babaev-an.ru/babaev-an/FileSplitter</PackageProjectUrl>
|
||||||
|
<RepositoryUrl>https://git.babaev-an.ru/babaev-an/FileSplitter</RepositoryUrl>
|
||||||
|
<NeutralLanguage>ru</NeutralLanguage>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
Binary file not shown.
369
output/x32/help/english.html
Normal file
369
output/x32/help/english.html
Normal file
@ -0,0 +1,369 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
|
||||||
|
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<title>«ANB Software File Splitter» help</title>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<h1>
|
||||||
|
ANB Software File Splitter
|
||||||
|
</h1>
|
||||||
|
<h2>
|
||||||
|
Version 0.5 (2023.04.16)
|
||||||
|
<br />
|
||||||
|
Copyrights © 2023 by Alewxander Babaev.
|
||||||
|
</h2>
|
||||||
|
|
||||||
|
<hr />
|
||||||
|
|
||||||
|
<a name="toc"></a>
|
||||||
|
<h3>Content</h3>
|
||||||
|
|
||||||
|
<ol>
|
||||||
|
<li>
|
||||||
|
<a href="#description">Description</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="#license">License</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="#split">How to use: Split file</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="#join">How to use: Join Files</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="#options">How to use: Application Parameters</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="#ConsoleParams">How to use: Console Line Parameters</a>
|
||||||
|
</li>
|
||||||
|
</ol>
|
||||||
|
|
||||||
|
<hr />
|
||||||
|
|
||||||
|
<a name="description"></a>
|
||||||
|
<h3>Description</h3>
|
||||||
|
<p>
|
||||||
|
<strong>ANB Software File Splitter</strong> allows you to divide a file into the nth number of files of a given
|
||||||
|
volume without archiving the data, and then assemble it into a single file, if you need it.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
The program works in two modes: 1) using command line parameters; 2) interactive mode.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<hr />
|
||||||
|
<a name="license"></a>
|
||||||
|
<h3>END USER LICENSE AGREEMENT (EULA)</h3>
|
||||||
|
|
||||||
|
<p>(Version 1.0)</p>
|
||||||
|
|
||||||
|
<h4>DEFINITIONS</h4>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
ANB Software File Splitter (hereinafter referred to as "product") - a program and/or a component of the program
|
||||||
|
and/or other (game, image, film, etc.), to which this agreement applies.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
End User (hereinafter referred to as "you" or "user") is a person and/or organization that uses the product,
|
||||||
|
provided under this license.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Alexander Babaev (hereinafter referred to as "Manufacturer") - the person and/or organization that produced the
|
||||||
|
product.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h4>
|
||||||
|
LIMITATIONS
|
||||||
|
</h4>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Some States (districts, regions, states) do not allow the limitation or exclusion of liability for unforeseen
|
||||||
|
damage. If your country (district, region, state) does not imply limitation or exclusion of liability for
|
||||||
|
unforeseen damages, then this agreement cannot apply to you. In this case, refuse to use the product.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Some States (districts, regions, states) do not allow the exclusion of implied warranties. If your country
|
||||||
|
(district, region, state) does not imply the exclusion of implied warranties that this agreement may not apply
|
||||||
|
to you. In this case, refuse to use the product.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h4>
|
||||||
|
SUBJECT OF THE AGREEMENT
|
||||||
|
</h4>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
This agreement is concluded between the Manufacturer of the product and the User of the product. This agreement
|
||||||
|
defines the relationship between the Manufacturer and the User arising from the use of the product.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h4>
|
||||||
|
LICENSE
|
||||||
|
</h4>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
The product is distributed on the principle of "AS-IS" ("AS IS"). The author does not bear ANY RESPONSIBILITY in
|
||||||
|
case this program causes physical, material or any other harm to you and your computer. You install the product
|
||||||
|
at your own risk. The manufacturer and/or Distributor does not bear any responsibility for errors, malfunctions
|
||||||
|
(etc.) caused by the product to your computer.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
You can use this program at your discretion, as well as copy and distribute with a link to the author and the
|
||||||
|
website "https://babaev-an.ru/". You are prohibited from copying, distributing the product without a link to the
|
||||||
|
author and the previously specified site. You are prohibited from copying and using the product if the copy of
|
||||||
|
the product you are installing does not have a link to the author and the previously specified site. You are
|
||||||
|
prohibited from changing the contents of the product, disassembling, disassembling and modifying the product,
|
||||||
|
using its components in other programs without the written agreement of the Manufacturer, removing or correcting
|
||||||
|
any proprietary and/or copyright marks in the product.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
IF YOU DOWNLOAD, COPY THE PRODUCT OR USE IT IN ANY OTHER WAY, YOU HEREBY CONFIRM YOUR AGREEMENT TO COMPLY WITH
|
||||||
|
THE TERMS OF THIS END USER LICENSE AGREEMENT. IF YOU DO NOT AGREE, DO NOT INSTALL, COPY, OR USE THE PRODUCT.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h4>
|
||||||
|
COPYRIGHT
|
||||||
|
</h4>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
The copyright for all copies of the product belongs to the Manufacturer and is protected by the legislation of
|
||||||
|
the Russian Federation and a number of other countries.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h4>
|
||||||
|
LIMITED WARRANTY AND DISCLAIMER
|
||||||
|
</h4>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
You are not given any guarantees. All your possible demands, claims and claims (including on quality) will be
|
||||||
|
UNRECOGNIZED.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h4>
|
||||||
|
LIMITATION OF LIABILITY
|
||||||
|
</h4>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
You are not given any obligations. All your possible requirements will be UNRECOGNIZED.
|
||||||
|
</p>
|
||||||
|
<hr />
|
||||||
|
|
||||||
|
<a name="split"></a>
|
||||||
|
<h3>How to use: Split file</h3>
|
||||||
|
<p>
|
||||||
|
The "File Splitting" operation is used to split a certain file (hereinafter, the source file) into n parts,
|
||||||
|
given size. It requires the following parameters:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<code>-fn="file name"</code> - name of the source file.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<code>-td="path"</code> - the folder where the parts of the file will be saved.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<code>-ps=«number»</code> - the size of a part of the file in bytes.
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
In interactive mode, the user will be interviewed for each parameter.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
The "File Splitting" operation may contain the following additional splitting parameters:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<code>/NoCheckHash</code> - don't check parts for matching checksums.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<code>/DeleteSource</code> - after splitting, the source file is deleted.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<code>/EncryptInfoFile</code> - whether the information file needs to be encrypted.
|
||||||
|
<strong>ATTENTION!</strong> Enabling this parameter obliges you to specify the parameter in the additional
|
||||||
|
assembly parameters during assembly <code>/DecryptInfoFile</code>. Otherwise, you will get <strong> return
|
||||||
|
code 3</strong> when trying assemble the file.
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Parameters are entered separated by a space, both in command-line parameters mode and in interactive mode.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
For example, you need to split the <code>C file:\MyFiles\myBigFile.mp4</code> to 10 MB files and save files
|
||||||
|
partitions to the <code>C folder:\myFilesSplited\</code> by deleting the source code, encrypting the split
|
||||||
|
information file and not giving the user no requests. Then you should run the program in the following way:
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<code>
|
||||||
|
FileSplitter split -fn="C:\myFiles\myBigFile.mp4" -td="C:\myFilesSplited" -ps=10485760 /DeleteSource /EncryptInfoFile --silent
|
||||||
|
</code>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<hr />
|
||||||
|
|
||||||
|
<a name="join"></a>
|
||||||
|
<h3>How to use: Join Files</h3>
|
||||||
|
<p>
|
||||||
|
The "Join files" operation connects the file that was previously split using the "Split File" operation. She
|
||||||
|
demands the following parameters:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<code>-ifn="Имя файла"</code> - the name of the file with information about the split.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<code>-tfn="Путь"</code> - the file to build the split into.
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
In interactive mode, the user will be interviewed for each parameter.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
The "Join Files" operation may contain the following additional assembly parameters:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<code>/NoCheckHash</code> - don't check parts for matching checksums.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<code>/DeleteSource</code> - after joining, the split files are deleted.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<code>/DecryptInfoFile</code> - whether to decrypt the information file. <strong>ATTENTION!</strong>
|
||||||
|
Enabling this parameter obliges you to specify the parameter in the additional splitting parameters when
|
||||||
|
splitting <code>/EncryptInfoFile</code>. Otherwise, you will get <strong> return code 3</strong> when trying
|
||||||
|
joining the file.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<code>/IgnoreVersion</code> - disable checking the version of the information file (NOT RECOMMENDED).
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<code>/SkipCheck</code> - disable checking the collected file for compliance with the original.
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Parameters are entered separated by a space, both in command-line parameters mode and in interactive mode.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
For example, you need to merge the file specified by the information
|
||||||
|
<code>C:\myFilesSplitter\myBigFile.mp4.fsi</code>, to file <code>C:\MyFiles\myBigFile.mp4</code> by deleting the
|
||||||
|
split files, decrypting the split information file and disabling checking the collected file for compliance with
|
||||||
|
the original. Then you should run the program in the following way:
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<code>
|
||||||
|
FileSplitter join -ifn="C:\myFilesSplited\myBigFile.mp4.fsi" -tfn="C:\myFiles\myBigFile.mp4" /DeleteSource /DecryptInfoFile /SkipCheck
|
||||||
|
</code>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<hr />
|
||||||
|
|
||||||
|
<a name="options"></a>
|
||||||
|
<h3>How to use: Application Parameters</h3>
|
||||||
|
<p>
|
||||||
|
The operation "Application Parameters" allows you to configure application parameters and works <strong> only in
|
||||||
|
interactive mode</strong>. It requires the following parameters:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<table style="text-align: center; border: 2px solid black;">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>
|
||||||
|
Parameter
|
||||||
|
</th>
|
||||||
|
<th>
|
||||||
|
Possible values
|
||||||
|
</th>
|
||||||
|
<th>
|
||||||
|
Description
|
||||||
|
</th>
|
||||||
|
<th>
|
||||||
|
Example
|
||||||
|
</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
language
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
String (language file name)
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
Sets the application language
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
language=russian
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<hr />
|
||||||
|
|
||||||
|
<a name="ConsoleParams"></a>
|
||||||
|
<h3>How to use: Console Line Parameters</h3>
|
||||||
|
<p>
|
||||||
|
To use the program in command line parameters mode, run the program by passing command line parameters in the
|
||||||
|
format:
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<code>
|
||||||
|
FileSplitter [OPERATION] [OPERATION PARAMETERS] [ADDITIONAL PARAMETERS] [SILENT MODE]
|
||||||
|
</code>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
[OPERATION] can take the following values:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<code>split</code> - perform <a href="#split">split operation</a>.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<code>join</code> - perform <a href="#join">join operation</a>.
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
[OPERATION PARAMETERS] and [ADDITIONAL PARAMETERS] are described in the corresponding help sections.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
[SILENT MODE] works only in command line parameters mode and is enabled by specifying:
|
||||||
|
</p>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<code>--silent</code> - the presence of this parameter indicates that no requests should be issued to the
|
||||||
|
user (the so-called "Silent mode").
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<p>
|
||||||
|
To turn off the silent mode, simply do not specify this parameter.
|
||||||
|
</p>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
372
output/x32/help/russian.html
Normal file
372
output/x32/help/russian.html
Normal file
@ -0,0 +1,372 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
|
||||||
|
<html lang="ru" xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<title>Справка по программе «ANB Software Делитель файлов»</title>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<h1>
|
||||||
|
ANB Software Делитель файлов
|
||||||
|
</h1>
|
||||||
|
<h2>
|
||||||
|
Версия 0.5 (2023.04.16)
|
||||||
|
<br />
|
||||||
|
Авторские права © 2023, Александр Бабаев.
|
||||||
|
</h2>
|
||||||
|
|
||||||
|
<hr />
|
||||||
|
|
||||||
|
<a name="toc"></a>
|
||||||
|
<h3>Содержание</h3>
|
||||||
|
|
||||||
|
<ol>
|
||||||
|
<li>
|
||||||
|
<a href="#description">Описание</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="#license">Лицензия</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="#split">Как использовать: Разделение файлов</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="#join">Как использовать: Объединение файлов</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="#options">Как использовать: Параметры приложения</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="#ConsoleParams">Как использовать: Параметры консольной строки</a>
|
||||||
|
</li>
|
||||||
|
</ol>
|
||||||
|
|
||||||
|
<hr />
|
||||||
|
|
||||||
|
<a name="description"></a>
|
||||||
|
<h3>Описание</h3>
|
||||||
|
<p>
|
||||||
|
<strong>ANB Software Делитель Файлов</strong> позволяет разделить файл на n-ое количество файлов заданного
|
||||||
|
объема без архивации данных, а также потом собрать в единый файл, если вам понадобится.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Программа работает в двух режимах: 1) с помощью параметров командной строки; 2) интерактивный режим.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<hr />
|
||||||
|
<a name="license"></a>
|
||||||
|
<h3>ЛИЦЕНЗИОННОЕ СОГЛАШЕНИЕ С КОНЕЧНЫМ ПОЛЬЗОВАТЕЛЕМ (EULA)</h3>
|
||||||
|
|
||||||
|
<p>(Версия 1.0)</p>
|
||||||
|
|
||||||
|
<h4>ОПРЕДЕЛЕНИЯ</h4>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
ANB Software File Splitter (далее "продукт") - программа и/или компонент программы и/или другое (игра,
|
||||||
|
изображение, фильм и т.п.), на которое распространяется данное соглашение.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Конечный пользователь (далее "вы" или "пользователь") - лицо и/или организация, которое(-ая) использует продукт,
|
||||||
|
предоставляемый под этой лицензией.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Александр Бабаев (далее "Производитель") - лицо и/или организация, которое(-ая) произвело продукт.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h4>
|
||||||
|
ОГРАНИЧЕНИЯ
|
||||||
|
</h4>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
В некоторых государствах (районах, областях, штатах) не позволяется ограничение или исключение ответственности
|
||||||
|
за непредвиденный ущерб. Если ваша страна (район, область, штат) не подразумевает ограничение или исключение
|
||||||
|
ответственности за непредвиденный ущерб, то данное соглашение не может применяться к вам. В этом случае
|
||||||
|
откажитесь от использования продукта.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
В некоторых государствах (районах, областях, штатах) не позволяется исключение подразумеваемых гарантий. Если
|
||||||
|
ваша страна (район, область, штат) не подразумевает исключение подразумеваемых гарантий, то данное соглашение не
|
||||||
|
может применяться к вам. В этом случае откажитесь от использования продукта.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h4>
|
||||||
|
ПРЕДМЕТ СОГЛАШЕНИЯ
|
||||||
|
</h4>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Данное соглашение заключается между Производителем продукта и Пользователем продукта. Данное соглашение
|
||||||
|
определяет отношения между Производителем и Пользователем, возникающие при использовании продукта.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h4>
|
||||||
|
ЛИЦЕНЗИЯ
|
||||||
|
</h4>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Продукт распространяется по принципу "AS-IS" ("КАК ЕСТЬ"). Автор не несет НИКАКОЙ ОТВЕТСТВЕННОСТИ в случае
|
||||||
|
нанесения данной программой физического, материального или любого другого вреда вам и вашему компьютеру. Вы на
|
||||||
|
свой страх и риск устанавливаете продукт. Производитель и/или Распространитель не несет(-ут) никакой
|
||||||
|
ответственности за ошибки, неисправности (и т.п.), нанесенные продуктом вашему компьютеру.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Вы можете использовать данную программу на свое усмотрение, а также копировать и распространять со ссылкой на
|
||||||
|
автора и сайт "https://babaev-an.ru/". Вам запрещается копировать, распространять продукт без ссылки на автора и
|
||||||
|
указанный ранее сайт. Вам запрещается копирование и использование продукта, если устанавливаемая вами копия
|
||||||
|
продукта не имеет ссылки на автора и указанный ранее сайт. Вам запрещается изменять содержимое продукта,
|
||||||
|
разбирать, дизассемблировать и изменять продукт, использовать её компоненты в других программах без письменного
|
||||||
|
соглашения Производителя, удалять или исправлять в продукте любые знаки о праве собственности и/или авторском
|
||||||
|
праве на продукт.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
ЕСЛИ ВЫ ЗАГРУЖАЕТЕ, КОПИРУЕТЕ ПРОДУКТ ИЛИ ИСПОЛЬЗУЕТЕ ЕГО КАКИМ-ЛИБО ДРУГИМ СПОСОБОМ, ЭТИМ ВЫ ПОДТВЕРЖДАЕТЕ СВОЕ
|
||||||
|
СОГЛАСИЕ СОБЛЮДАТЬ УСЛОВИЯ ДАННОГО ЛИЦЕНЗИОННОГО СОГЛАШЕНИЯ С КОНЕЧНЫМ ПОЛЬЗОВАТЕЛЕМ. ЕСЛИ ВЫ НЕ СОГЛАСНЫ, НЕ
|
||||||
|
УСТАНАВЛИВАЙТЕ, НЕ КОПИРУЙТЕ И НЕ ИСПОЛЬЗУЙТЕ ПРОДУКТ.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h4>
|
||||||
|
АВТОРСКОЕ ПРАВО
|
||||||
|
</h4>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Авторское право на все копии продукта принадлежат Производителю и защищено законодательством РФ и ряда других
|
||||||
|
стран.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h4>
|
||||||
|
ОГРАНИЧЕННАЯ ГАРАНТИЯ И ПРАВОВАЯ ОГОВОРКА
|
||||||
|
</h4>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Вам не дается никаких гарантий. Все ваши возможные требования, притязания и претензии (в том числе и по
|
||||||
|
качеству) будут НЕПРИЗНАННЫ.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h4>
|
||||||
|
ОГРАНИЧЕНИЕ ОТВЕТСТВЕННОСТИ
|
||||||
|
</h4>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Вам не дается никаких обязательств. Все ваши возможные требования будут НЕПРИЗНАННЫ.
|
||||||
|
</p>
|
||||||
|
<hr />
|
||||||
|
|
||||||
|
<a name="split"></a>
|
||||||
|
<h3>Как использовать: Разделение файлов</h3>
|
||||||
|
<p>
|
||||||
|
Операция «Разделение файлов» служит для разбиения некоторого файла (далее, исходный файл) на n частей, заданного
|
||||||
|
размера. Она требует следующих параметров:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<code>-fn="Имя файла"</code> - имя исходного файла.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<code>-td="Путь"</code> - папка, в которую будут сохранены части файла.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<code>-ps=«ЧИСЛО»></code> - размер части файла в байтах.
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
В интерактивном режиме пользователь будет опрошен по каждому параметру.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Операция «Разделение файлов» может содержать следующие дополнительные параметры разбиения:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<code>/NoCheckHash</code> - не проверять части на совпадение с контрольными суммами.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<code>/DeleteSource</code> - после разбиения удаляется исходный файл.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<code>/EncryptInfoFile</code> - нужно ли шифровать файл информации. <strong>ВНИМАНИЕ!</strong> Включение
|
||||||
|
этого параметра обязывает Вас при сборке указывать в дополнительных параметрах сборки параметр
|
||||||
|
<code>/DecryptInfoFile</code>. В противном случае, вы словите <strong>код возврата 3</strong> при попытке
|
||||||
|
собрать файл.
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Параметры вводятся через пробел, как в режиме параметров командной строки, так и в интерактивномрежиме.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Например, нужно разбить файл <code>C:\myFiles\myBigFile.mp4</code> на файлы размером 10 МБайт и сохранить файлы
|
||||||
|
разбиения в папку <code>C:\myFilesSplited\</code>, удалив исходник, зашифровав файл информации о разбиении и не
|
||||||
|
выдавая пользователю никаких запросов. Тогда вы должны запустить программу следующим способом:
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<code>
|
||||||
|
FileSplitter split -fn="C:\myFiles\myBigFile.mp4" -td="C:\myFilesSplited" -ps=10485760 /DeleteSource /EncryptInfoFile --silent
|
||||||
|
</code>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<hr />
|
||||||
|
|
||||||
|
<a name="join"></a>
|
||||||
|
<h3>Как использовать: Объединение файлов</h3>
|
||||||
|
<p>
|
||||||
|
Операция «Объединение файлов» соединяет разбитый ранее с помощью операции «Разделения файла» файл. Она требует
|
||||||
|
следующих параметров:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<code>-ifn="Имя файла"</code> - имя файла с информацией о разбиении.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<code>-tfn="Путь"</code> - файл, в который нужно собрать разбиение.
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
В интерактивном режиме пользователь будет опрошен по каждому параметру.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Операция «Объединение файлов» может содержать следующие дополнительные параметры сборки:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<code>/NoCheckHash</code> - не проверять части на совпадение с контрольными суммами.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<code>/DeleteSource</code> - после объединения удаляются файлы разбиения.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<code>/DecryptInfoFile</code> - нужно ли дешифровать файл информации. <strong>ВНИМАНИЕ!</strong> Включение
|
||||||
|
этого параметра обязывает Вас при разбивке указывать в дополнительных параметрах разбиения параметр
|
||||||
|
<code>/EncryptInfoFile</code>. В противном случае, вы словите <strong>код возврата 3</strong> при попытке
|
||||||
|
собрать файл.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<code>/IgnoreVersion</code> - отключить проверку версии файла информации (НЕ РЕКОМЕНДУЕТСЯ).
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<code>/SkipCheck</code> - отключить проверку собранного файла на соответствие оригиналу.
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Параметры вводятся через пробел, как в режиме параметров командной строки, так и в интерактивномрежиме.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Например, нужно объединить файл, заданный информацией <code>C:\myFilesSplited\myBigFile.mp4.fsi</code>, в файл
|
||||||
|
<code>C:\myFiles\myBigFile.mp4</code>, удалив файлы разбиения, дешифровав файл информации о разбиении и отключив
|
||||||
|
проверку собранного файла на соответствие оригиналу. Тогда вы должны
|
||||||
|
запустить программу следующим способом:
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<code>
|
||||||
|
FileSplitter join -ifn="C:\myFilesSplited\myBigFile.mp4.fsi" -tfn="C:\myFiles\myBigFile.mp4" /DeleteSource /DecryptInfoFile /SkipCheck
|
||||||
|
</code>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<hr />
|
||||||
|
|
||||||
|
<a name="options"></a>
|
||||||
|
<h3>Как использовать: Параметры приложения</h3>
|
||||||
|
<p>
|
||||||
|
Операция «Параметры приложения» позволяет настроить параметры приложения и работает <strong>только в
|
||||||
|
интерактивном режиме</strong>. Она требует
|
||||||
|
следующих параметров:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<table style="text-align: center; border: 2px solid black;">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>
|
||||||
|
Параметр
|
||||||
|
</th>
|
||||||
|
<th>
|
||||||
|
Возможные значение
|
||||||
|
</th>
|
||||||
|
<th>
|
||||||
|
Описание
|
||||||
|
</th>
|
||||||
|
<th>
|
||||||
|
Пример
|
||||||
|
</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
language
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
Строка (имя файла языка)
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
Задаёт язык приложения
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
language=russian
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<hr />
|
||||||
|
|
||||||
|
<a name="ConsoleParams"></a>
|
||||||
|
<h3>Как использовать: Параметры консольной строки</h3>
|
||||||
|
<p>
|
||||||
|
Для использования программы в режиме параметров командной строки запустите программу, передав параметры
|
||||||
|
командной строки в формате:
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<code>
|
||||||
|
FileSplitter [ОПЕРАЦИЯ] [ПАРАМЕТРЫ ОПЕРАЦИИ] [ДОПОЛНИТЕЛЬНЫЕ ПАРАМЕТРЫ] [ТИХИЙ РЕЖИМ]
|
||||||
|
</code>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
[ОПЕРАЦИЯ] может принимать следующие значения:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<code>split</code> - выполнить <a href="#split">операцию разделения</a>.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<code>join</code> - выполнить <a href="#join">операцию объединения</a>.
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
[ПАРАМЕТРЫ ОПЕРАЦИИ] и [ДОПОЛНИТЕЛЬНЫЕ ПАРАМЕТРЫ] описаны в соответствующих разделах справки.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
[ТИХИЙ РЕЖИМ] работает только в режиме параметров командной строки и включается указанием:
|
||||||
|
</p>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<code>--silent</code> - наличие этого параметра указывает, что не должны выдаваться никакие запросы
|
||||||
|
пользователю (так называемый «Тихий режим»).
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<p>
|
||||||
|
Для выключения тихого режима просто не указывайте этот параметр.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
70
output/x32/languages/english.json
Normal file
70
output/x32/languages/english.json
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
{
|
||||||
|
//This file was translated with Yandex Translator (https://translate.yandex.ru/)
|
||||||
|
//Application Parameters
|
||||||
|
"AppTitle": "ANB Software File Splitter",
|
||||||
|
"AppVersion": "Version: {0}",
|
||||||
|
"AppCopyrights": "Copyrights (C) {0} by Alexander Babaev.",
|
||||||
|
|
||||||
|
//Messages
|
||||||
|
"MessageNoParametersForSplit": "Split parameters are not set. For information about working with the program, see the file «<program's folder>\\Help\\English.html#ConsoleParams»",
|
||||||
|
"MessageSplitAsk": "Information about splitting file:\n***{0}\n***Size: {1}\n***File hash: {2}\n***It is assumed to split into {3} parts(s)\nDo you want to start split? [Y|y - yes, any other letter - no]",
|
||||||
|
"MessageStartSplit": "The splitting of the file {0} into parts of the size {1} and saving them in the directory {2} is started.",
|
||||||
|
"MessageSplitFilePart": "Processing part {0} of {1}...",
|
||||||
|
"MessageSplitComplete": "File splitting {0} is complete!",
|
||||||
|
"MessageHashCheckStart": "Starting check the hash of the splitting",
|
||||||
|
"MessageHashCheckFail": "Unfortunately, the file \"{0}\" did not pass the hash check!",
|
||||||
|
"MessageHashCheckComplete": "Hash verification is complete!",
|
||||||
|
"MessageJoinAsk": "Do you want to start joining file {0}? [Y|y - yes, any other letter - no]",
|
||||||
|
"MessageStartJoin": "Joining of files specified by the information file {0} into the file {1} has started.",
|
||||||
|
"MessageJoinUnsupportedFile": "Unfortunately, the version of the information file {0} is not supported!",
|
||||||
|
"MessageJoinUnknownFile": "Can't read the information file! Maybe it's encrypted?",
|
||||||
|
"MessageJoinHashError": "Unfortunately, the split files did not pass verification. Perhaps they are damaged?",
|
||||||
|
"MessageJoinCheckError": "Unfortunately, the joined file did not pass the validation of join. Perhaps there were any mistakes?",
|
||||||
|
"MessageJoinFilePart": "Processing part {0} of {1}...",
|
||||||
|
"MessageJoinComplete": "File joining {0} is complete!",
|
||||||
|
"MessagePleaseWaitToReady": "Please wait. Preparations for the operation are underway. This may take a long time, during which the program may seem to hang.",
|
||||||
|
|
||||||
|
//Interactive mode messages
|
||||||
|
"InteractiveStartAsk": "Choose one of the actions:\n* S|s - splitting\n* J|j - joining\n* O|o - program's options\n* E|e - exit\nYour choice:",
|
||||||
|
"InteractiveWrongInput": "Unknown action selected!",
|
||||||
|
"InteractiveOperationFinish": "The operation is completed! Exit code is: {0}",
|
||||||
|
"InteractiveFileNameNotExist": "The file does not exist! Repeat file entry? [Y|y - to repeat, any other letter - to abort operation]",
|
||||||
|
"InteractiveFileNameExist": "The file exists! You need to select a non-existent file! Repeat file entry? [Y|y - to repeat, any other letter - to abort operation]",
|
||||||
|
|
||||||
|
"InteractiveSplitFileNameAsk": "Enter the name of the file to split (or drag it here):",
|
||||||
|
"InteractiveSplitFileNameResult": "File selected for splitting: {0}",
|
||||||
|
"InteractiveSplitTargetDirAsk": "Select the folder where you want to save the parts of the file (or leave it empty to use the folder of the split file):",
|
||||||
|
"InteractiveSplitTargetDirResult": "The split files will be saved in the folder: {0}",
|
||||||
|
"InteractiveSplitPartSizeAsk": "Enter the size of the part (in bytes):",
|
||||||
|
"InteractiveSplitPartSizeAsk2": "You have selected the part size {0}. Is everything right? [Y|y - yes, continue; any other letter - no, repeat input]",
|
||||||
|
"InteractiveSplitPartSizeResult": "Selected part size: {0}",
|
||||||
|
"InteractiveSplitOptionsAsk": "Enter additional splitting parameters (space separator):",
|
||||||
|
"InteractiveSplitOptionsResult": "Additional splitting parameters are selected: [{0}]",
|
||||||
|
|
||||||
|
"InteractiveJoinFileNameAsk": "Enter the name of the split information file (or drag it here):",
|
||||||
|
"InteractiveJoinFileNameResult": "The file selected for the join is: {0}",
|
||||||
|
"InteractiveJoinTargetFileNameAsk": "Select the name and path to the file to be joined (for example, c:\\myFiles\\myFile.txt ):",
|
||||||
|
"InteractiveJoinTargetFileNameResult": "The file will be joined: {0}",
|
||||||
|
"InteractiveJoinOptionsAsk": "Enter additional join parameters (space delimiter):",
|
||||||
|
"InteractiveJoinOptionsResult": "Additional join parameters selected: [{0}]",
|
||||||
|
|
||||||
|
"InteractiveOptionsAsk": "Enter the program parameters (space delimiter):",
|
||||||
|
"InteractiveOptionsConfirm": "Program parameters selected:\n{0}\nDo you confirm them? [Y|y - yes, any other letter - to abort]",
|
||||||
|
"InteractiveOptionsResult": "The parameters are saved! To apply them, you need to restart the program...",
|
||||||
|
|
||||||
|
//Константы размеров
|
||||||
|
"FileSizeStringsByte": "byte",
|
||||||
|
"FileSizeStringsKByte": "KByte",
|
||||||
|
"FileSizeStringsMByte": "MByte",
|
||||||
|
"FileSizeStringsGByte": "GByte",
|
||||||
|
"FileSizeStringsTByte": "TByte",
|
||||||
|
|
||||||
|
//Переводы кодов возврата
|
||||||
|
"ExitCodeNamesAllDone": "Completed successfully",
|
||||||
|
"ExitCodeNamesInfoVersionUnsupported": "The version of the split information file is not supported",
|
||||||
|
"ExitCodeNamesInvalidParameters": "Invalid parameters",
|
||||||
|
"ExitCodeNamesSplitFileHashError": "Error checking the hash sum of split files",
|
||||||
|
"ExitCodeNamesTargetFileCheckError": "Error checking the integrity of joined file",
|
||||||
|
"ExitCodeNamesUnknownInfoFile": "Unknown partitioning information file",
|
||||||
|
"ExitCodeNamesUserAborted": "Aborted by the user"
|
||||||
|
}
|
69
output/x32/languages/russian.json
Normal file
69
output/x32/languages/russian.json
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
{
|
||||||
|
//Параметры приложения
|
||||||
|
"AppTitle": "ANB Software Делитель файлов",
|
||||||
|
"AppVersion": "Версия: {0}",
|
||||||
|
"AppCopyrights": "Авторские права (C) {0}, Александр Бабаев.",
|
||||||
|
|
||||||
|
//Сообщения
|
||||||
|
"MessageNoParametersForSplit": "Не заданы параметры разбиения. Информацию о работе с программой смотрите в файле «<папка с программой>\\Help\\Russian.html#ConsoleParams»\"",
|
||||||
|
"MessageSplitAsk": "Информация о разбиваемом файле:\n***{0}\n***Размер: {1}\n***Хэш файла: {2}\n***Предполагается разбиение на {3} части(-ей)\nВы хотите начать разбиение? [Y|y - да, Любая другая буква/слово/выражение - нет]",
|
||||||
|
"MessageStartSplit": "Запущено разбиение файла {0} на части размером {1} и сохранением их в директории {2}.",
|
||||||
|
"MessageSplitFilePart": "Идёт обработка части {0} из {1}...",
|
||||||
|
"MessageSplitComplete": "Разбиение файла {0} завершено!",
|
||||||
|
"MessageHashCheckStart": "Начинаю проверку хэша разбиения",
|
||||||
|
"MessageHashCheckFail": "К сожалению, файл \"{0}\" не прошёл проверку хэша!",
|
||||||
|
"MessageHashCheckComplete": "Проверка хэша завершена!",
|
||||||
|
"MessageJoinAsk": "Вы хотите начать сборку файла {0}? [Y|y - да, любая другая буква/слово/выражение - нет]",
|
||||||
|
"MessageStartJoin": "Запущено объединение файлов, заданных файлом информации {0}, в файл {1}.",
|
||||||
|
"MessageJoinUnsupportedFile": "К сожалению, версия файла информации {0} не поддерживается!",
|
||||||
|
"MessageJoinUnknownFile": "Не могу прочитать файл информации! Возможно он зашифрован?",
|
||||||
|
"MessageJoinHashError": "К сожалению, разделённые файлы не прошли проверку. Возможно они повреждены?",
|
||||||
|
"MessageJoinCheckError": "К сожалению, объединённый файл не прошли проверку корректности объединения. Возможно были какие-либо ошибки?",
|
||||||
|
"MessageJoinFilePart": "Идёт обработка части {0} из {1}...",
|
||||||
|
"MessageJoinComplete": "Объединение файла {0} завершено!",
|
||||||
|
"MessagePleaseWaitToReady": "Пожалуйста, подождите. Идёт подготовка к операции. Это может занять длительное время, в течении которого программа может казаться зависшей.",
|
||||||
|
|
||||||
|
//Сообщения интерактивного режима
|
||||||
|
"InteractiveStartAsk": "Выберете одно из действий:\n* S|s - разбиение\n* J|j - объединение\n* O|o - параметры программы\n* E|e - выход\nВаш выбор:",
|
||||||
|
"InteractiveWrongInput": "Выбрано неизвестное действие!",
|
||||||
|
"InteractiveOperationFinish": "Операция завершена с кодом: {0}",
|
||||||
|
"InteractiveFileNameNotExist": "Файл не существует! Повторить ввод файла? [Y|y - для повтора, любая другая буква - прерывание операции]",
|
||||||
|
"InteractiveFileNameExist": "Файл существует! Нужно выбрать несуществующий файл! Повторить ввод файла? [Y|y - для повтора, любая другая буква - прерывание операции]",
|
||||||
|
|
||||||
|
"InteractiveSplitFileNameAsk": "Введите имя разбиваемого файла (или перетащите его сюда):",
|
||||||
|
"InteractiveSplitFileNameResult": "Для разбиения выбран файл: {0}",
|
||||||
|
"InteractiveSplitTargetDirAsk": "Выберете папку, куда следует сохранить части файла (или оставьте пустым, чтобы использовать папку разбиваемого файла):",
|
||||||
|
"InteractiveSplitTargetDirResult": "Файлы разбиения будут сохранены в папке: {0}",
|
||||||
|
"InteractiveSplitPartSizeAsk": "Введите размер части (в байтах):",
|
||||||
|
"InteractiveSplitPartSizeAsk2": "Вы выбрали размер части {0}. Всё правильно? [Y|y - да, продолжить, любая другая буква - нет, повторить ввод]",
|
||||||
|
"InteractiveSplitPartSizeResult": "Выбран размер части: {0}",
|
||||||
|
"InteractiveSplitOptionsAsk": "Введите дополнительные параметры разбиения (разделитель - пробел):",
|
||||||
|
"InteractiveSplitOptionsResult": "Выбраны дополнительные параметры разбиения: [{0}]",
|
||||||
|
|
||||||
|
"InteractiveJoinFileNameAsk": "Введите имя файла информации о разбиении (или перетащите его сюда):",
|
||||||
|
"InteractiveJoinFileNameResult": "Для сборки выбран файл: {0}",
|
||||||
|
"InteractiveJoinTargetFileNameAsk": "Выберите имя и путь к собираемому файлу (например, c:\\myFiles\\myFile.txt):",
|
||||||
|
"InteractiveJoinTargetFileNameResult": "Будет собран файл: {0}",
|
||||||
|
"InteractiveJoinOptionsAsk": "Введите дополнительные параметры соединения (разделитель - пробел):",
|
||||||
|
"InteractiveJoinOptionsResult": "Выбраны дополнительные параметры соединения: [{0}]",
|
||||||
|
|
||||||
|
"InteractiveOptionsAsk": "Введите параметры программы (разделитель - пробел):",
|
||||||
|
"InteractiveOptionsConfirm": "Выбраны параметры программы:\n{0}\nВы их подтверждаете? [Y|y - да, любая другая буква - выход]",
|
||||||
|
"InteractiveOptionsResult": "Параметры сохранены! Для их применения требуется перезапуск программы...",
|
||||||
|
|
||||||
|
//Константы размеров
|
||||||
|
"FileSizeStringsByte": "байт",
|
||||||
|
"FileSizeStringsKByte": "Кб",
|
||||||
|
"FileSizeStringsMByte": "Мб",
|
||||||
|
"FileSizeStringsGByte": "Гб",
|
||||||
|
"FileSizeStringsTByte": "Тб",
|
||||||
|
|
||||||
|
//Переводы кодов возврата
|
||||||
|
"ExitCodeNamesAllDone": "Успешно завершено",
|
||||||
|
"ExitCodeNamesInfoVersionUnsupported": "Версия файла информации о разбиении не поддерживается",
|
||||||
|
"ExitCodeNamesInvalidParameters": "Неверные параметры",
|
||||||
|
"ExitCodeNamesSplitFileHashError": "Ошибка проверки хэш-суммы разделённых файлов",
|
||||||
|
"ExitCodeNamesTargetFileCheckError": "Ошибка проверки целостности собираемого файла",
|
||||||
|
"ExitCodeNamesUnknownInfoFile": "Неизвестный файл информации о разбиении",
|
||||||
|
"ExitCodeNamesUserAborted": "Прервано пользователем"
|
||||||
|
}
|
1
output/x32/settings.json
Normal file
1
output/x32/settings.json
Normal file
@ -0,0 +1 @@
|
|||||||
|
{"Language":"russian"}
|
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user