powered by simpleCommunicator - 2.0.19     © 2024 Programmizd 02
Map
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Распаковка архивов на C#
25 сообщений из 64, страница 2 из 3
Распаковка архивов на C#
    #40127345
SAS2014
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вообщем я взял утилиту, которая распаковывает нужные виды архивов и написал код
но проблема возникла новая, что строка Process.Start("cmd", "/C" + "exit"); - создает новое окно cmd не закрывая старое

можно ли как то закрывать старое cmd созданное в цикле????

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
   //Имя запускаемого приложения
                ProcessStartInfo cmd = new ProcessStartInfo();
                cmd.FileName = "cmd";
                
                //команда
                Directory.CreateDirectory("temp_files");
                DirectoryInfo dir2 = new DirectoryInfo(@"temp_files");
                
                foreach (string item in dirs)
                {
                    string[] arr = item.Split(new string[] { "\\" }, StringSplitOptions.None);
                    string t = arr[arr.Length-1];

                    dir2.CreateSubdirectory(t);
                    string arc = dir2.FullName + "\\" + t;

                    string cmd_1 = @"/k 7z e " + item.ToString() + " -o" + arc + " objects.txt -r -y";
                    cmd.Arguments = cmd_1;
                    Process.Start(cmd);

                   // Process.Start("cmd", "/C" + "exit");
                }
...
Рейтинг: 0 / 0
Распаковка архивов на C#
    #40127346
SAS2014
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
string cmd_1 = @"/k 7z e " + item.ToString() + " -o" + arc + " objects.txt -r -y";


строка распаковки архива и куда и какой имено файл
...
Рейтинг: 0 / 0
Распаковка архивов на C#
    #40127348
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Когда запускается дочернее консольное приложение оно по умолчанию использует консоль родительского, но если у родительского нет консоли, то дочернее создает свою консоль.

Сделай свое приложение консольным, тогда весь вывод пойдет в твою консоль.
...
Рейтинг: 0 / 0
Распаковка архивов на C#
    #40127350
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SAS2014
вообщем я взял утилиту, которая распаковывает нужные виды архивов и написал код
но проблема возникла новая, что строка Process.Start("cmd", "/C" + "exit"); - создает новое окно cmd не закрывая старое

Пробелы кто за тебя должен ставить? нет такого ключа "/Cexit" вот и игнорирует его cmd.

В коде ты ключ /k используешь, в хэлп пробовал заглянуть что он означает?
cmd /?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
Запуск новой копии интерпретатора команд Windows.

CMD [/A | /U] [/Q] [/D] [/E:ON | /E:OFF] [/F:ON | /F:OFF] [/V:ON | /V:OFF]
    [[/S] [/C | /K] строка]

/C      Выполнение указанной команды (строки) с последующим завершением.
/K      Выполнение указанной команды (строки) без последующего завершения.
/S      Изменение поведения после /C или /K (см. ниже)
/Q      Отключение режима вывода команд на экран (ECHO).
/D      Отключение выполнения команд AutoRun из реестра (см. ниже)
/A      Вывод результатов выполнения команд в формате ANSI.
/U      Вывод результатов выполнения команд в формате UNICODE.
/T:fg    Выбор цвета переднего плана/фона (более подробно см. COLOR /?)
/E:ON   Разрешение расширенной обработки команд (см. ниже)
/E:OFF  Запрет расширенной обработки команд (см. ниже)
/F:ON   Разрешение символов завершения имен файлов и папок (см. ниже)
/F:OFF  Запрет символов завершения имен файлов и папок (см. ниже)
/V:ON   Разрешение отложенного расширения переменных среды с применением
        символа '!' в качестве разделителя. Например, /V:ON разрешает
        использовать !var! в качестве расширения переменной var во время
        выполнения. Синтаксис var служит для расширения переменных
        при вводе, что приводит к совсем другим результатам внутри
        цикла FOR.
/V:OFF  Запрет отложенного расширения переменных среды.


cmd тебе тут вообще не надо чтобы 7z запускать. Запускай сразу 7z, а все остальное пиши в аргументы
Код: c#
1.
2.
3.
cmd.FileName = "7z";
cmd.Arguments = @"e " + item.ToString() + " -o" + arc + " objects.txt -r -y";
Process.Start(cmd);
...
Рейтинг: 0 / 0
Распаковка архивов на C#
    #40127399
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T
Когда запускается дочернее консольное приложение оно по умолчанию использует консоль родительского, но если у родительского нет консоли, то дочернее создает свою консоль.

Сделай свое приложение консольным, тогда весь вывод пойдет в твою консоль.

Можно запускать с опциями редиректа. Но я не пойму почему автор так уперся делать это запуская отдельный процесс. Два раза ему тут уже дали ссылку на библиотеку готовую с примерами.
...
Рейтинг: 0 / 0
Распаковка архивов на C#
    #40127404
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
Dima T
Когда запускается дочернее консольное приложение оно по умолчанию использует консоль родительского, но если у родительского нет консоли, то дочернее создает свою консоль.

Сделай свое приложение консольным, тогда весь вывод пойдет в твою консоль.

Можно запускать с опциями редиректа. Но я не пойму почему автор так уперся делать это запуская отдельный процесс. Два раза ему тут уже дали ссылку на библиотеку готовую с примерами.



Моэет он бы и последовал рекомендациям, но появляются другие советчики и снова сбивают его с толку на запуск процесса
...
Рейтинг: 0 / 0
Распаковка архивов на C#
    #40127546
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SAS2014
можно ли как то закрывать старое cmd созданное в цикле????

У Process помимо метода Start есть и другие методы. Например, Close, Kill


SAS2014
Код: c#
1.
string cmd_1 = @"/k 7z e " + item.ToString() + " -o" + arc + " objects.txt -r -y";


String.Format отменили, я помню
...
Рейтинг: 0 / 0
Распаковка архивов на C#
    #40127568
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79
String.Format отменили, я помню
отменили в шестом шарпе
...
Рейтинг: 0 / 0
Распаковка архивов на C#
    #40127587
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro
Arm79
String.Format отменили, я помню
отменили в шестом шарпе

Кстати, смех-смехом, но в "шестом шарпе" советуют, там где это можно, вместо него использовать interpolated strings - для них сделали очень много оптимизаций на уровне компилятора.
...
Рейтинг: 0 / 0
Распаковка архивов на C#
    #40127688
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
string.concat и то было бы лучше.
...
Рейтинг: 0 / 0
Распаковка архивов на C#
    #40127696
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtes
string.concat и то было бы лучше.

Ну, вообще интерполяция там, где это уместно, и заменяется на concat:
Код: c#
1.
2.
3.
4.
5.
6.
7.
static void Main(string[] args)
{
  var a = "a";
  var b = "b";
  var c = "c";
  Console.WriteLine($"{a}{b}{c}");
}


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
.method private hidebysig static void Main (string[] args) cil managed 
{
  .maxstack 3
  .entrypoint
  .locals init (
    [0] string b,
    [1] string c
  )
  IL_0000: ldstr "a"
  IL_0005: ldstr "b"
  IL_000a: stloc.0
  IL_000b: ldstr "c"
  IL_0010: stloc.1
  IL_0011: ldloc.0
  IL_0012: ldloc.1
  IL_0013: call string [System.Runtime]System.String::Concat(string, string, string)
  IL_0018: call void [System.Console]System.Console::WriteLine(string)
  IL_001d: ret
}


String.Format при интерполяции включается уже в более сложных случаях типа
Код: c#
1.
2.
3.
4.
var a = 123;
var b = "b";
var c = "c";
Console.WriteLine($"{a:G}@{b}#{c}");
...
Рейтинг: 0 / 0
Распаковка архивов на C#
    #40127848
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
Shocker.Pro
пропущено...
отменили в шестом шарпе

Кстати, смех-смехом, но в "шестом шарпе" советуют, там где это можно, вместо него использовать interpolated strings - для них сделали очень много оптимизаций на уровне компилятора.

Опять гонения на творческих людей? ))

Преждевременная оптимизация - это зло. Применение Interpolated strings в задаче с архивами именно с целью ускорения и оптимизаций просто не нужно. Вот наглядность - может быть.
...
Рейтинг: 0 / 0
Распаковка архивов на C#
    #40127855
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79,

когда пишешь код. он должен быть понятными лаконичным, чтоб было достаточно одного взгляда для понимания происходящего
иногда даже в ущерб оптимизации, следуют сделать понятнее и яснее. декомпозировать на несколько методов или еще что то.
просто сравни 2 эти строки:
во второму случае, сразу видно, где строка начинается и где заканчивается и из чего она состоит, а при нормальной подсветке это видно еще лучше. но нет, мы будем говнякать и складывать строки. и делать это надо сразу, потому, что потом это уже никто и никогда править не будет. потому, что никому не нужны изменения в коммите, которые не касаются той задачи, для которой он создан
Код: c#
1.
2.
string cmd_1 = @"/k 7z e " + item.ToString() + " -o" + arc + " objects.txt -r -y";
var cmd_1 = $@"/k 7z e {item} -o{arc} objects.txt -r -y";
...
Рейтинг: 0 / 0
Распаковка архивов на C#
    #40127862
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtes
Arm79,

когда пишешь код. он должен быть понятными лаконичным, чтоб было достаточно одного взгляда для понимания происходящего
иногда даже в ущерб оптимизации, следуют сделать понятнее и яснее. декомпозировать на несколько методов или еще что то.
просто сравни 2 эти строки:
во второму случае, сразу видно, где строка начинается и где заканчивается и из чего она состоит, а при нормальной подсветке это видно еще лучше. но нет, мы будем говнякать и складывать строки. и делать это надо сразу, потому, что потом это уже никто и никогда править не будет. потому, что никому не нужны изменения в коммите, которые не касаются той задачи, для которой он создан
Код: c#
1.
2.
string cmd_1 = @"/k 7z e " + item.ToString() + " -o" + arc + " objects.txt -r -y";
var cmd_1 = $@"/k 7z e {item} -o{arc} objects.txt -r -y";



Не совсем понял, к чему этот спич? Я же так и сказал - через + склеивать строку отстой
...
Рейтинг: 0 / 0
Распаковка архивов на C#
    #40127870
fkfka2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Roman Mejtes
Arm79,

когда пишешь код. он должен быть понятными лаконичным, чтоб было достаточно одного взгляда для понимания происходящего
иногда даже в ущерб оптимизации, следуют сделать понятнее и яснее. декомпозировать на несколько методов или еще что то.
просто сравни 2 эти строки:
во второму случае, сразу видно, где строка начинается и где заканчивается и из чего она состоит, а при нормальной подсветке это видно еще лучше. но нет, мы будем говнякать и складывать строки. и делать это надо сразу, потому, что потом это уже никто и никогда править не будет. потому, что никому не нужны изменения в коммите, которые не касаются той задачи, для которой он создан
Код: c#
1.
2.
string cmd_1 = @"/k 7z e " + item.ToString() + " -o" + arc + " objects.txt -r -y";
var cmd_1 = $@"/k 7z e {item} -o{arc} objects.txt -r -y";


И в первом и во втором случае код гамно. Потому что неизвестно с какими символами (пробелы и прочее) могут быть подставляемые параметры. Хочешь передать параметры в екзешник - для этого есть коллекция ArgumentList
...
Рейтинг: 0 / 0
Распаковка архивов на C#
    #40127913
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkfka2
Roman Mejtes
Arm79,

когда пишешь код. он должен быть понятными лаконичным, чтоб было достаточно одного взгляда для понимания происходящего
иногда даже в ущерб оптимизации, следуют сделать понятнее и яснее. декомпозировать на несколько методов или еще что то.
просто сравни 2 эти строки:
во второму случае, сразу видно, где строка начинается и где заканчивается и из чего она состоит, а при нормальной подсветке это видно еще лучше. но нет, мы будем говнякать и складывать строки. и делать это надо сразу, потому, что потом это уже никто и никогда править не будет. потому, что никому не нужны изменения в коммите, которые не касаются той задачи, для которой он создан
Код: c#
1.
2.
string cmd_1 = @"/k 7z e " + item.ToString() + " -o" + arc + " objects.txt -r -y";
var cmd_1 = $@"/k 7z e {item} -o{arc} objects.txt -r -y";


И в первом и во втором случае код гамно. Потому что неизвестно с какими символами (пробелы и прочее) могут быть подставляемые параметры. Хочешь передать параметры в екзешник - для этого есть коллекция ArgumentList

В итоге все-равно будет вызван CreateProcess() где все параметры в одной строке (lpCommandLine).
...
Рейтинг: 0 / 0
Распаковка архивов на C#
    #40127919
fkfka2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima T
В итоге все-равно будет вызван CreateProcess() где все параметры в одной строке (lpCommandLine).

ArgumentList когда собирает lpCommandLine ескейпит и квотит всякую гадость. Arguments передается как есть. Легко можно по исходникам убедиться.
...
Рейтинг: 0 / 0
Распаковка архивов на C#
    #40128031
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
Shocker.Pro
пропущено...
отменили в шестом шарпе

Кстати, смех-смехом, но в "шестом шарпе" советуют, там где это можно, вместо него использовать interpolated strings - для них сделали очень много оптимизаций на уровне компилятора.


В "шестом шарпе" или NET 6 ?
...
Рейтинг: 0 / 0
Распаковка архивов на C#
    #40128034
fkfka2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ролг Хупин
В "шестом шарпе" или NET 6 ?

В шестом шарпе для .NET 6
...
Рейтинг: 0 / 0
Распаковка архивов на C#
    #40128105
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkfka2
Ролг Хупин
В "шестом шарпе" или NET 6 ?

В шестом шарпе для .NET 6


Вот, теперь корректно, а то нас же будут читать будущие поколения, которым лететь на Луну и Марс
...
Рейтинг: 0 / 0
Распаковка архивов на C#
    #40128108
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин
будущие поколения, которым лететь на Луну и Марс
Да какие будущие поколения?

Истребители F22 не смогли пересечь 180 меридиан
При попытке перегнать истребители F22 «своим ходом» с Гавайских островов на базу ВВС Kadena на японском острове Окинава программный сбой «в навигационном обеспечении» вынудил пилотов развернуться и возвратиться туда, откуда вылетели. Теперь стала известна истинная природа «навигационной аномалии».
Как сообщает DefenseTech со ссылкой на Associated Press, истребители не сумели преодолеть так называемую «линию перемены дат» — условную линию, по разные стороны которой местное время одно и то же (с точностью до часового пояса), но календарные даты различаются на одни сутки. Линия перемены дат проходит по меридиану 180 градусов с отдельными отклонениями.
Перемена дат осуществляется (и вообще имеет смысл) лишь при использовании местного времени. При пересечении линии перемены дат необходимо либо прибавлять, либо вычитать одни сутки – в зависимости от того, в каком направлении осуществляется движение. По всей видимости, этот парадокс Земного шара, осознанный еще участниками экспедиции Магеллана, был позабыт разработчиками F-22 Raptor.
Последствия такой забывчивости оказались весьма ощутимыми. У истребителей в полете, отмечает Defense Tech, вышли из строя топливная и навигационная системы, а также – частично – связь.
Лишь одному пилоту удалось связаться с экспертами разработчика (компании Lockheed Martin). Несколько пилотов попытались перезагрузить ПО истребителя в полете.
«Победить» ошибку не удалось, однако сами истребители и их пилоты уцелели, что в подобной ситуации следует считать несомненной удачей. Возвращение на Гавайские острова потребовало дополнительной дозаправки в воздухе.
Впоследствии «навигационную аномалию» удалось исправить, и F-22 все-таки прибыли на авиабазу назначения.



2. Фирма Motorola испытывала новый процессор для автопилота на истребителе в Израиле. Все было отлажено. Пилоты на испытаниях отправились «огибать рельеф» с севера до юга Израиля. Истребитель прекрасно пролетел на автопилоте над равнинной частью, над горной частью, над долиной реки Иордан, и приближался к Мёртвому морю. Не долетев до него, неожиданно происходит общий сброс процессора, автопилот выключается на полном ходу, пилоты переходят на ручное управление, и сажают истребитель.

Процессор отправили на доработку и тестирование. Все тесты прошли снова без сбоев. Снова начали реальную проверку. Истребитель пролетел над всеми территориями, но при подлете к Мёртвому морю: общий сброс, выключение автопилота, ручная посадка.
Длительные тесты не могли выявить никаких изъянов. После продолжительных попыток было найдено, что программы автопилота при вычислении параметров управления по глубоко научным секретным формулам производили деление на значение текущей высоты истребителя над уровнем океана. При подлете к Мёртвому морю высота становилась нулевой, и процессор при делении на ноль давал общий сброс. До этого случая никому не приходило в голову, что самолеты могут летать ниже уровня океана…
...
Рейтинг: 0 / 0
Распаковка архивов на C#
    #40128199
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro, приведенные примеры вершина айсберга, весь софт дается AS IS. Чем дальше, тем больше огребаем от этого подхода.
...
Рейтинг: 0 / 0
Распаковка архивов на C#
    #40128269
fkfka2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Только хотел продемонстрировать автору как легко написать всего лишь что-нибудь типа:

Код: c#
1.
2.
3.
4.
5.
6.
using SevenZip;

using (SevenZipExtractor extractor = new("foo.rar"))
{
    extractor.ExtractArchive("d:\\temp");
}


Как оказалось, что 7zip умеет читать *.rar файлы, но, похоже, не умеет их создавать. Так что обломинго - попробовать не могу.
...
Рейтинг: 0 / 0
Распаковка архивов на C#
    #40128270
fkfka2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,

Была еще известная хрень (лень искать) с пересечением экватора, когда при этом автопилот истребителя тут же переворачивал его вверх ногами :))
...
Рейтинг: 0 / 0
Распаковка архивов на C#
    #40128322
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkfka2
Shocker.Pro,

Была еще известная хрень (лень искать) с пересечением экватора, когда при этом автопилот истребителя тут же переворачивал его вверх ногами :))
это как раз красивая шутка вроде )
...
Рейтинг: 0 / 0
25 сообщений из 64, страница 2 из 3
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Распаковка архивов на C#
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (0):
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]