Имеется следующий код:
string command = string.Empty;
DirectoryInfo dInfoForTesting = new DirectoryInfo(@"E:\TestFiles");
FileInfo[] files = dInfoForTesting.GetFiles();
Random rnd = new Random();
ProcessStartInfo startInfo = new ProcessStartInfo
{
WorkingDirectory = @"E:\TestFiles",
FileName = "cmd.exe",
UseShellExecute = false,
RedirectStandardInput = false
};
foreach (FileInfo file in files)
{
string rndPswd = "134";
command = "arj a -m1 -g" + rndPswd + " " + file.Name + ".arj " + file.Name;
startInfo.Arguments = command;
Process.Start(startInfo);
}
Собственно, задача состоит в том, чтобы вызывать архиватор ARJ в нужной папке через командную строку, передавать ему соответствующую команду (command
) и создавать таким образом защищённый паролем архив (путь к данному архиватору уже прописан в переменной PATH
, так что можно спокойной обращаться к нему через команду arj
). Сама команда выглядит следующим образом:
arj a -m1 -g134 10.arj 10
где a - это создание архива -m1 - режим архивации -g134 - защитить архив паролем 134 10.arj - название архива 10 - файл, который будет заархивирован
Проблема состоит в том, что если просто в папке E:\TestFiles
вызвать командную строку и в ней написать данную команду для того же файла с именем 10, то создастся архив. Но если запустить мой код, то ничего не произойдёт. Помогите разобраться, в чём проблема.
Вдруг кому поможет
Необходимо добавить в строку command
либо /c
, либо /k
, где
/c - cmd выполняет команду и завершает работу
/k - то же самое, но продолжает работу
command = "/c arj a -m1 -g" + rndPswd + " " + file.Name + ".arj " + file.Name;
Вам не нужно вызывать командную строку, вам нужно вызвать в этой папке сам arj.exe:
ProcessStartInfo startInfo = new ProcessStartInfo
{
WorkingDirectory = @"E:\TestFiles",
FileName = "arj.exe", // или просто arj
UseShellExecute = false,
RedirectStandardInput = false
};
foreach (FileInfo file in files)
{
string rndPswd = "134";
command = "a -m1 -g" + rndPswd + " " + file.Name + ".arj " + file.Name;
startInfo.Arguments = command;
Process.Start(startInfo);
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Это краткий перевод вопроса How to get ConnectionString from EF7 DbContext
Как заставить прописанный мной объект для игры, создаваться только после нажатие игроком на кнопку 'Играть'Я не смог разобраться в instance, а opacity...
почему у меня выходит Stackoverflow exception, при попытке применения метода RotateLeft() для экземпляра класса BinarySearchTree А? Проблема именно в этом методе,...