Files
DomainIpSplitter/Program.cs
2025-08-29 18:46:14 +07:00

109 lines
3.9 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using System;
using System.IO;
using System.Text;
namespace TextFileSplitter
{
class Program
{
static void SplitFile(string inputFile, int maxLines = 1023, string neededExt = null)
{
// Читаем все строки исходного файла
string[] lines;
try
{
lines = File.ReadAllLines(inputFile, Encoding.UTF8);
}
catch (Exception ex)
{
Console.WriteLine($"Ошибка при чтении файла: {ex.Message}");
return;
}
// Если строк меньше или равно maxLines, ничего не делаем
if (lines.Length <= maxLines)
{
Console.WriteLine($"Файл содержит {lines.Length} строк (не больше {maxLines}), разделение не требуется.");
return;
}
// Определяем базовое имя и расширение файла
string baseName = Path.GetFileNameWithoutExtension(inputFile);
string directory = Path.GetDirectoryName(inputFile);
string ext = Path.GetExtension(inputFile);
if (!string.IsNullOrEmpty(neededExt))
{
ext = neededExt;
}
// Если файл находится в корне диска, directory может быть null
if (string.IsNullOrEmpty(directory))
{
directory = ".";
}
// Разделяем файл на части
int partNum = 1;
for (int i = 0; i < lines.Length; i += maxLines)
{
// Формируем имя нового файла
string outputFile = Path.Combine(directory, $"{baseName}_{partNum}{ext}");
// Определяем количество строк для текущей части
int linesToTake = Math.Min(maxLines, lines.Length - i);
string[] partLines = new string[linesToTake];
Array.Copy(lines, i, partLines, 0, linesToTake);
// Записываем часть строк в новый файл
try
{
File.WriteAllLines(outputFile, partLines, Encoding.UTF8);
Console.WriteLine($"Создан файл {outputFile} с {partLines.Length} строками");
}
catch (Exception ex)
{
Console.WriteLine($"Ошибка при записи файла {outputFile}: {ex.Message}");
}
partNum++;
}
}
static void Main(string[] args)
{
if (args.Length > 0)
{
foreach (string line in args)
SplitFile(line, neededExt: ".bat");
return;
}
try
{
Console.Write("Введите путь к файлу для разделения: ");
string inputFile = Console.ReadLine();
if (string.IsNullOrEmpty(inputFile))
{
Console.WriteLine("Путь к файлу не может быть пустым.");
return;
}
if (!File.Exists(inputFile))
{
Console.WriteLine("Файл не существует.");
return;
}
SplitFile(inputFile, neededExt: ".bat");
}
catch (Exception ex)
{
Console.WriteLine($"Произошла ошибка: {ex.Message}");
}
Console.WriteLine("Нажмите любую клавишу для выхода...");
Console.ReadKey();
}
}
}