Я пишу код на C ++, который будет отображаться на ближайший доступный диск, используя «net use * \ server … etc», и после этого я хочу открыть на нем файл.
Есть ли команда, которая позволит мне взаимодействовать с этим новым диском без необходимости заранее знать, на каком диске он был сопоставлен? (Обычно это будет диск Z :, но не всегда!)
Более понятный пример:
system("net use * \\server\folder\ p455word /user:server\user /p:no")
(output: "Server succesfully mapped to drive Z:")
Тогда я обычно пытаюсь открыть файл:
system("Z:\\folder\mydoc.docx")
Мой вопрос о том, как это сделать:
system("*\\\folder\mydoc.docx")
Если * — то, что диск выбрал для подключения к компьютеру, или если есть обходной путь к этому. Спасибо!
Если вы ищете net use
-специфическая магия здесь, вы будете разочарованы. Ваша программа просто передает текстовую строку в оболочку Windows и не имеет сведений или сведений о выполненной вами команде. Он, конечно, не может извлечь информацию о состоянии о результате этого вызова, кроме чтения текстового вывода команды.
К счастью, текстовый вывод — это все, что вам нужно — ваша цитата показывает, что назначенная буква диска тут же. Вам просто нужно вытащить его, а затем построить последующий system
динамические вызовы путем создания строки из уже известной буквы диска и фиксированной части вашего пути.
system
хотя на самом деле не предназначен для всего этого. Вот как выполнить команду и получить ее вывод. Извлечение буквы диска из строки "Server succesfully mapped to drive Z:"
также будет отдельный вопрос. В общем, когда у вас есть проблема, разбейте ее на составные части; тогда вы сможете «найти это» с успехом.
Других решений пока нет …