Как вы знаете, где начинается значение? Если это всегда 5-е и 6-е слова, вы можете использовать, например, :
B=$(echo $A | cut -d ' ' -f 5-)
. Эта команда cut
используется для вырезания части строки, используя простой пробел в качестве разделителя слов.
Перекомбинировать их вручную сложно:
Вы можете попытаться снова объединить их, я думаю, это сработает, но обязательно следуйте тем же правилам экранирования командной строки, что и окнам имеет . Это может быть нечто большее, чем простое решение, которое вы ищете.
Также, если есть какие-либо параметры, в которых есть пробелы, вы можете присоединить их к строке, заключив их в кавычки. Вот пример странного правила экранирования: если у вас есть --folderpath "c: \ test \"
, то последняя обратная косая черта должна быть удвоена --folderpath "c: \ test \\ "
.
Если вы используете MFC:
Вы можете получить желаемое значение из theApp.m_lpCmdLine вашего производного CWinApp. Обратите внимание, что вы все еще можете получить к ним доступ и другим способом с помощью __argc, и __argv или CommandLineToArgvW .
Если вы используете только Win32 (даже без GUI):
Вы можете получить его из WinMain . Что может быть точкой входа в вашу программу.
Обратите внимание, что вы все равно можете получить к ним доступ и другим способом с помощью __argc, __argv или CommandLineToArgvW .
Если вам необходимо использовать консольное приложение с main или wmain:
Win32 API GetCommandLine кажется правильным решением. Тем не менее, вам нужно будет разобрать это, чтобы обойти имя .exe. Учтите также кавычки вокруг имени / пути exe. Если в начале таких кавычек нет, просто перейдите к следующей позиции для начала.
s точка входа.Обратите внимание, что вы все равно можете получить к ним доступ и другим способом с помощью __argc, __argv или CommandLineToArgvW .
Если вам необходимо использовать консольное приложение с main или wmain:
Win32 API GetCommandLine кажется правильным решением. Тем не менее, вам нужно будет разобрать это, чтобы обойти имя .exe. Учтите также кавычки вокруг имени / пути exe. Если в начале таких кавычек нет, просто перейдите к следующей позиции для начала.
s точка входа.Обратите внимание, что вы все равно можете получить к ним доступ и другим способом с помощью __argc, __argv или CommandLineToArgvW .
Если вам необходимо использовать консольное приложение с main или wmain:
Win32 API GetCommandLine кажется правильным решением. Тем не менее, вам нужно будет разобрать это, чтобы обойти имя .exe. Учтите также кавычки вокруг имени / пути exe. Если в начале таких кавычек нет, просто перейдите к следующей позиции для начала.
Учтите также кавычки вокруг имени / пути exe. Если в начале таких кавычек нет, просто перейдите к следующей позиции для начала. Учтите также кавычки вокруг имени / пути exe. Если в начале таких кавычек нет, просто перейдите к следующей позиции для начала.Вы можете использовать Функция GetCommandLine
Почему бы не использовать «WinMain» вместо «main»? Это должно дать вам строку в желаемом формате.
Есть вызов Win32 API, который возвращает командную строку: GetCommandLine
Если у вас есть строка, выделенная с достаточным пространством, используйте strcat по каждому элементу в списке. Да, это так же просто, как объединить их вместе с пробелами.