Jednoczesne użycie "ukośników" i nawiasów ostrych w stringu

0

Cześć wszystkim!
Próbuję utworzyć string którego treść będzie komendą dla schtasks. Konstrukcja tej komendy wymaga jednak jednoczensego użycia "/" i "< >" co jak się domyślam może być problemem podczas tworzenia stringa którego prześlę do skryptu.

Tworzony string ma taką postać:

string ciagZaplanowania = @"schtasks / create  / tn < '" + taskName + "'> / tr < '" + taskRun + "'> /mo < " + modifier + "> [/ d<day>[,< day > ...] | *] [/ m<month>[,< month > ...]] [/ i<idletime>] [/ st<starttime>] [/ ri<interval>] [{/ et<endtime> | / du<duration>} [/ k]] [/ sd<startdate>] [/ ed<enddate>] [/ it] [/ z] [/ f]";

wynik z etykiety pomija jednak nawiasy ostre:

schtasks / create / tn < 2022-01-13-10-30> / tr < 2022-01-13T10:30:59> /mo < > [/ d[,< day > ...] | *] [/ m[,< month > ...]] [/ i] [/ st] [/ ri] [{/ et | / du} [/ k]] [/ sd] [/ ed] [/ it] [/ z] [/ f]

Czy można zrobić coś aby wszsytkie znaki były wczytane do stringa i w jego wyniku wyświetlały także i wszystkie nawiasy ostre?

0
string taskName = "taskname";
string taskRun = "taskrun";
string modifier = "modif";
string z = $@"schtasks / create  / tn < '{taskName}'> / tr < '{taskRun}'> /mo < {modifier}> [/ d<day>[,< day > ...] | *]  [/ sd<startdate>] [/ ed<enddate>] [/ it] [/ z] [/ f]";
Console.WriteLine(z);

zwraca:

schtasks / create  / tn < 'taskname'> / tr < 'taskrun'> /mo < modif> [/ d<day>[,< day > ...] | *]  [/ sd<startdate>] [/ ed<enddate>] [/ it] [/ z] [/ f]

o to chodzi?

0

@Varran:

Nie.

Porównaj ciągi:

ciągi string:

string taskName = DateTime.Now.ToString("yyyy-MM-dd-HH-mm");

string taskRun = DateTime.Now.ToString(" s ");

string modifier = "MONTHLY";

string ciagZaplanowania = $@"schtasks / create  / tn < " + taskName + "> / tr < " + taskRun + "> /mo < " + modifier + "> / d <day> / m <month> / i <idletime> / st <starttime> / ri <interval> / et <endtime> / du <duration> / sd <startdate> / ed <enddate> / it / z / f";

wynik:

schtasks / create / tn < 2022-01-13-11-52> / tr < 41 > /mo < MONTHLY> / d / m / i / st / ri / et / du / sd / ed / it / z / f

Jak widzisz wynik pomija (prawie wszystkie?) wartości w nawiasach ostrych, takie jak np: day, month, idletime itd.

0

Czy nie jest przypadkiem tak, że VS interpretuje wartość w < > jako zmienną którą ma odnaleźć, a jeśli taka zmienna nie została utworzona to jej wynikiem jest null więc wtedy pomija cały ten nawias?

2

jezeli uzywasz $"" na poczatku deklarowanego stringa to nie wstawiaj w budowanym strigu konstrukcji

$"poczatek jakiegos stringu " + zmiennaDoWcisnieciaWString + " koniec jakiegos stringu";

tylko rób to tak:

$"poczatek jakiegos stringu {zmiennaDoWcisnieciaWString} koniec jakiegos stringu"

poprawiłem Twoj przykład zgodnie z powyzszym:

string taskName = DateTime.Now.ToString("yyyy-MM-dd-HH-mm");
string taskRun = DateTime.Now.ToString(" s ");
string modifier = "MONTHLY";
string ciagZaplanowania = $@"schtasks / create  / tn < {taskName}> / tr < {taskRun}> /mo < {modifier}> / d <day> / m <month> / i <idletime> / st <starttime> / ri <interval> / et <endtime> / du <duration> / sd <startdate> / ed <enddate> / it / z / f"; 
Console.WriteLine(ciagZaplanowania);

i moj wynik to:

schtasks / create  / tn < 2022-01-13-12-10> / tr <  22 > /mo < MONTHLY> / d <day> / m <month> / i <idletime> / st <starttime> / ri <interval> / et <endtime> / du <duration> / sd <startdate> / ed <enddate> / it / z / f

są ostre nawiasy, o to chodzi?

0
string taskName = "taskname";
string taskRun = "taskrun";
string modifier = "modif";
string ciagZaplanowania = "schtasks / create  / tn < {0} > / tr < {1} > /mo < {2} > [/ d<day>[,< day > ...] | *] [/ m<month>[,< month > ...]] [/ i<idletime>] [/ st<starttime>] [/ ri<interval>] [{{/ et<endtime> | / du<duration>}} [/ k]] [/ sd<startdate>] [/ ed<enddate>] [/ it] [/ z] [/ f]";

ciagZaplanowania = string.Format(ciagZaplanowania, taskName, taskRun, modifier);

Console.WriteLine(ciagZaplanowania);
1

szczerze mowic nie wiem jak u siebie mam wywolac wyswietlenie tego stringa tak aby mi ucielo te ostre nawiasy.

Skad bierzesz wynik gdzie Ci ucina te ostre nawiasy? ja testowalem w Consoli, probowalem lamac linie stringa zeby sprawdzic czy w nowej linii bedzie uwzgledniany $ i @, ale wszystko wyswielta sie git, z nawiasami ostrymi

0

Pewnie wycina ci ostre nawiasy bo traktuje to jako HTML - używaj &lt; i &gt; - musi być jakaś metoda do automatycznego zmieniania tego przed wyświetlaniem, ale nie pamiętam tego w WebForms.

0

@Varran:

Tak, o to chodzi! Jesteś miszczem ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1