Селектором :has()
является CSS4, и он почти не поддерживает браузер (январь 2019 г.). Вам нужно будет использовать Javascript, пока не появится поддержка.
Я просто осуществил проверку и проверил проблему. Это удивило меня, но это - последнее \в первом аргументе.
"C:\Program Files\Application name\" <== remove the last '\'
Этому нужно больше объяснения, у кого-либо есть идея? Я склонен назвать это ошибкой.
<час>Часть 2, я запустил еще несколько тестов, и
"X:\\aa aa\\" "X:\\aa aa\" next
становится
X:\\aa aa\
X:\\aa aa" next
, Немного действия Google дает некоторое понимание от блог Jon Galloway , основные правила:
Для добавления ответа Ian Kemp
, Если Вас блок называют "myProg.exe" и Вы передаете в строке "C:\Documents and Settings\All Users\Start Menu\Programs\App name" ссылку так
C:\>myprog.exe "C:\Documents and Settings\All Users\Start Menu\Programs\App name"
, строковый "C:\Documents and Settings\All Users\Start Menu\Programs\App name"
будет в args [0].
Для добавления к тому, что все остальные уже сказали Это могла бы быть проблема выхода. Необходимо выйти обратных косых черт другой обратной косой чертой.
Должно быть что-то как:
C:\>myprog.exe "C:\\Documents and Settings\\All Users\\Start Menu\\Programs\\App name"
Какова точно проблема? Так или иначе вот некоторые общие рекомендации:
Удостоверяются, что Ваш Основной метод (в Program.cs) определяется как:
void Main(string[] args)
Тогда args является массивом, содержащим параметры командной строки.
Недавно я заметил ту же досадную проблему и решил написать синтаксический анализатор для анализа массива аргументов командной строки.
Примечание: проблема в том, что аргументы командной строки .NET, переданные в статическую функцию void Main (string [] args), экранируют \ "и \\. Это сделано намеренно, так как вы действительно можете захотеть передать аргумент, имеющий цитата или обратная косая черта. Один пример:
скажем, что вы хотите передать в качестве единственного аргумента следующее:
-msg: Эй, «Где вы?»
например.
sampleapp -msg : "Эй, \" Где вы в? \ ""
Можно было бы отправить его с поведением по умолчанию.
Если вы не видите причин, по которым кому-либо нужно избегать кавычек или обратную косую черту для вашей программы, вы можете использовать свой собственный синтаксический анализатор для синтаксического анализа командной строки, как показано ниже.
IE. [программа] .exe "C: \ test \" arg1 arg2
будет иметь a args [0] = c: \ test "arg1 arg2
Вы ожидаете, что args [0] = c: \ test \, а затем args [1] = arg1 и args [2] = arg2.
Приведенная ниже функция анализирует аргументы в список с таким упрощенным поведением.
Обратите внимание, что arg [0] - это имя программы с использованием приведенного ниже кода. (Вы вызываете List.ToArray () для преобразования результирующего списка в массив строк.)
protected enum enumParseState : int { StartToken, InQuote, InToken };
public static List<String> ManuallyParseCommandLine()
{
String CommandLineArgs = Environment.CommandLine.ToString();
Console.WriteLine("Command entered: " + CommandLineArgs);
List<String> listArgs = new List<String>();
Regex rWhiteSpace = new Regex("[\\s]");
StringBuilder token = new StringBuilder();
enumParseState eps = enumParseState.StartToken;
for (int i = 0; i < CommandLineArgs.Length; i++)
{
char c = CommandLineArgs[i];
// Console.WriteLine(c.ToString() + ", " + eps);
//Looking for beginning of next token
if (eps == enumParseState.StartToken)
{
if (rWhiteSpace.IsMatch(c.ToString()))
{
//Skip whitespace
}
else
{
token.Append(c);
eps = enumParseState.InToken;
}
}
else if (eps == enumParseState.InToken)
{
if (rWhiteSpace.IsMatch(c.ToString()))
{
Console.WriteLine("Token: [" + token.ToString() + "]");
listArgs.Add(token.ToString().Trim());
eps = enumParseState.StartToken;
//Start new token.
token.Remove(0, token.Length);
}
else if (c == '"')
{
// token.Append(c);
eps = enumParseState.InQuote;
}
else
{
token.Append(c);
eps = enumParseState.InToken;
}
}
//When in a quote, white space is included in the token
else if (eps == enumParseState.InQuote)
{
if (c == '"')
{
// token.Append(c);
eps = enumParseState.InToken;
}
else
{
token.Append(c);
eps = enumParseState.InQuote;
}
}
}
if (token.ToString() != "")
{
listArgs.Add(token.ToString());
Console.WriteLine("Final Token: " + token.ToString());
}
return listArgs;
}