2196 / 416 / 113
Регистрация: 26.09.2020
Сообщений: 767
|
|||||||||||
1 | |||||||||||
Окавычить и разбить нельзя Разбить и окавычить10.08.2023, 11:25. Показов 1091. Ответов 35
Как разбить стоку, типа (командная строка Windows):
0
|
10.08.2023, 11:25 | |
Ответы с готовыми решениями:
35
Thread разбить программу в несколько потоков mutex, разбить класс на несколько потоков Разбить строку на предложения, а предложения разбить на слова Разбить строку Разбить на страницы Разбить текст |
Любознательный
6546 / 1913 / 333
Регистрация: 10.03.2016
Сообщений: 4,355
|
|
11.08.2023, 14:59 | 21 |
Ну, вот же, правильный подход к решению... ССЗБ это подача путей с пробелами без кавычек, то бишь, возникает конкретный вопрос: зачем парсить эти пути с ошибкой (без кавычек)? Делишь строку по пробелам, проверяешь первый элемент массива на существование - если нет такого файла (именно файла, это важно), то исключение, а если существует, то собираешь аргументы в кучу и поехали дальше...
А, %PATHEXT% - зверский костыль, который к тому же может не помочь... Ну, ты чего? Где, стеб-то? Вполне легальные, рабочие варианты тебе показываю... которые сломают твой парсер...
0
|
6243 / 2118 / 334
Регистрация: 10.12.2013
Сообщений: 7,302
|
|
11.08.2023, 15:51 | 22 |
iNNOKENTIY21,
powershell предоставляет тебе возможность попользоваться своим собственным парсером, зачем нужно что-то ещё ? (ссылка лежит на том же месте, где ты её видел в последний раз)
0
|
2196 / 416 / 113
Регистрация: 26.09.2020
Сообщений: 767
|
|
11.08.2023, 16:07 [ТС] | 23 |
затем, что они встречаются. 'C:\Program Files\Realtek\Audio\HDA\RtlUpd64.exe -r -m -nrg2709' — этот из uninstalstring, рабочий, винда удаляет драйвер.
что это , если не стёб? душнилово? душишь. почти в каждом посте. итак ясно, что лучше бы. но оно так встречается. конечно костыль. и? лучше же нету, пока. можно опираться только на .exe (гвоздь прибить), для простоты Добавлено через 5 минут затем, что я не знаю, то ли это и как воспользоваться. думаю это не то, что мне надо. примера не нашел или не сопоставил со своими нуждами.
0
|
Любознательный
6546 / 1913 / 333
Регистрация: 10.03.2016
Сообщений: 4,355
|
||||||
11.08.2023, 17:22 | 24 | |||||
дык, я же тебя "пытал", можно сказать, откуда берутся (каким образом считываешь и куда выводишь) эти строки, но ты партизанишь...
стёб - это совсем другое... Ну, ёлы-палы, ты тоже взялся читать между строк? Зря. Там нет ничего... кроме правды-матки, ничего лишнего... а то, обзываешь тут душегубом... на ровном месте. Зачем гвоздь? Вот же прямая подсказка: Раздели строку по всем пробелам и потом собирай пробелами же с первого элемента по одному, но на каждом шаге поэлементного склеивания, проверяй наличие файла в системе... если элементы закончились, а файла всё ещё нет, то исключение... Так, во всяком случае, будет не совсем костыльно работать. Добавлено через 11 минут а если количество пробелов - величина переменная, то можно так делить:
0
|
6243 / 2118 / 334
Регистрация: 10.12.2013
Сообщений: 7,302
|
|
11.08.2023, 18:26 | 25 |
а в Windows NT никаких пробельных символов при именовании
об'ектов файловой не практиковалось*, это ж каким надо быть от'явленным мудаком, чтобы протолкнуть эту чудо-идею в жизнь и какими утырками надо быть, чтобы на это согласиться. Микрософт. Набили в сиденье стула гвоздей остриём вверх, прикрыли тряпочкой, притушили свет, ждём ... (*) символ _ завсегда использовался вместо пробела. Кстати. Джеффри Сновера вытолкали из этой замечательной компании . Ещё в октябре прошлого года.
0
|
1453 / 247 / 65
Регистрация: 03.06.2020
Сообщений: 638
|
||||||
11.08.2023, 19:29 | 26 | |||||
Они хотели, как лучше. Чтобы в проводнике были литературные названия, а для доса вовсю использовался формат имен 8.3
Тогда действительно приходилось это учитывать, но сейчас, когда даже в линукс, pwsh передает нативным приложениям не имя файла, а объект и те все понимают, то ворчать нет особых причин, например:
0
|
Покинул форум
3672 / 1483 / 355
Регистрация: 07.05.2015
Сообщений: 2,903
|
||||||
11.08.2023, 19:51 | 27 | |||||
1
|
Любознательный
6546 / 1913 / 333
Регистрация: 10.03.2016
Сообщений: 4,355
|
||||||
11.08.2023, 20:52 | 28 | |||||
дык, теперь-то чего сокрушаться? доктор сказал в морг, значит в морг... никакой реанимации не будет, увы...
iNNOKENTIY21, ты куда исчез там? тут вот примерный код настряпал:
1
|
Покинул форум
3672 / 1483 / 355
Регистрация: 07.05.2015
Сообщений: 2,903
|
|
11.08.2023, 22:16 | 29 |
YuS_2, при всём уважении, так можно довести задачу до
0
|
2196 / 416 / 113
Регистрация: 26.09.2020
Сообщений: 767
|
|
12.08.2023, 00:01 [ТС] | 30 |
„запытали„ ничего я не спрашивал, претензий не имею, упал случайно. ну я пошел. всего доброго
0
|
YuS_2
|
12.08.2023, 08:06
#31
|
Не по теме: мда-а-а... уж... видимо, пятница у кого-то не задалась и вместо пива, в организм закрался озверин... :D
0
|
2196 / 416 / 113
Регистрация: 26.09.2020
Сообщений: 767
|
|||||||||||
12.08.2023, 13:53 [ТС] | 32 | ||||||||||
Вот это новое для меня.
0
|
Любознательный
6546 / 1913 / 333
Регистрация: 10.03.2016
Сообщений: 4,355
|
||||||
12.08.2023, 14:32 | 33 | |||||
это, как раз, про AST, ссылку про разбор которого, давал volodin661
но это тоже подгонка под отдельные данные, получается. Смотри:
Код
"d:\Program" Files\7-Zip\7z xv.exe a arch.zip .\subdir\* "d:\Program Files\7-Zip\7z xv.exe" a arch.zip .\subdir\* "d:\Program" Files\7-Zip\7z xv.exe a arch.zip .\sub dir\* "d:\Program Files\7-Zip\7z xv.exe" a arch.zip .\sub dir\* "d:\Program Files\7-Zip\7z xv.exe" a arch.zip .\sub dir\* "d:\Program Files\7-Zip\7z xv.exe" a arch.zip .\sub dir\* "C:\Program Files\Realtek\Audio\HDA\RtlUpd64.exe" open -r --m /nrg2709 "C:\Program Files\Realtek\Audio\HDA\RtlUpd64.exe" open -r --m /nrg2709 "d:\Program Files\7-Zip\7z xv.exe" - реальный файл (переименованный для тестов "7z.exe")".\subdir\*", ".\sub dir\*" - реальные пути, с файлами внутри каталогов"d:\Program Files\7-Zip\7z xv.exe" a arch.zip ".\subdir\*" - работающая команда, упаковка файлов из указанного пути, в архив "arch.zip":Код
PS_7.3.5> &"d:\Program Files\7-Zip\7z xv.exe" a arch.zip ".\sub dir\*" 7-Zip 21.01 alpha (x64) : Copyright (c) 1999-2021 Igor Pavlov : 2021-03-09 Open archive: arch.zip -- Path = arch.zip Type = zip Physical Size = 16984 Scanning the drive: 3 files, 57347 bytes (57 KiB) Updating archive: arch.zip Add new data to archive: 3 files, 57347 bytes (57 KiB) Files read from disk: 3 Archive size: 16984 bytes (17 KiB) Everything is Ok
0
|
2196 / 416 / 113
Регистрация: 26.09.2020
Сообщений: 767
|
||||||
12.08.2023, 15:03 [ТС] | 34 | |||||
я знаю, и volodin661 спасибо за ссылку.
получается, как и у тебя. мы же вроде уже выяснили, что не решаемо и все решения — приближения.
0
|
Любознательный
6546 / 1913 / 333
Регистрация: 10.03.2016
Сообщений: 4,355
|
|
12.08.2023, 17:29 | 35 |
именно!
Но если уж браться за это дело, то, наверное, надо попробовать налабать наиболее точное приближение... я так думаю! Здесь пара моментов: удаляются все кавычки, во всех ключах и в путях ключей, на выходе остается окавыченным только путь к исполняемому файлу... это же не есть хорошо. и ещё, вот это (путь без кавычек): Код
'd:\Program Files\7-Zip\7z xv.exe a arch.zip .\subdir\*' Код
"d:\Program Files\7-Zip\7z xv.exe" a arch.zip .\subdir\*
0
|
2196 / 416 / 113
Регистрация: 26.09.2020
Сообщений: 767
|
||||||
13.08.2023, 11:35 [ТС] | 36 | |||||
Справедливо. С пробелами засада. У парсера есть индексы, посчитать пробелы. Коду сильно прибавляется…
там есть типы, что было в кавычках приобретает тип String.
0
|
13.08.2023, 11:35 | |
13.08.2023, 11:35 | |
Помогаю со студенческими работами здесь
36
Разбить слово Разбить на подпрограммы Разбить на подпрограммы Разбить строку Разбить число Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |