Невозможно сохранить файл после открытия в сетевом сопоставленном каталоге через файл .bat

Я использую следующий код, чтобы открыть несколько файлов в существующем сетевом сопоставленном каталоге.

pushd \\networkdirectory\subfolder
start file1.xlsx
start file2.xls

Проблема в том, что, поскольку я использую pushd, он отображает временный каталог UNC, а затем, когда я пытаюсь сохранить файл .xlsx в Excel после внесения изменений, он говорит

'Z:\\networkdirectory\subfolder' cannot be found

Любые идеи?

Почему бы не сопоставить это место с чем-то более постоянным, взгляните на Net Use.

Compo 10.08.2018 15:16
pushd создает временный диск для путей UNC и изменяет его как текущий рабочий каталог; а может попробовать start "" /D . file1.xlsx?
aschipfl 10.08.2018 16:54

Файл хранится в сети, а не локально, и у меня нет доступа для изменения сети. Все, что я хочу сделать, это открыть файл с помощью файла .bat и сохранить его в сети. Мне не нужен временный диск, я хочу использовать существующий сетевой диск.

pvayn 10.08.2018 21:32

Затем используйте существующий сетевой диск. pushd "<ExistingNetworkDrive>:\subfolder" или cd /d "<ExistingNetworkDrive>:\subfolder" или start "" "<ExistingNetworkDrive>:\subfolder\file1.xlsx"

sst 10.08.2018 22:13

Спасибо Mofi, что решил это! Хотел бы я дать вам за это баллы. : /

pvayn 13.08.2018 14:30
1
5
63
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Команда PUSHD с включенными по умолчанию расширениями команд создает временную букву диска, которая указывает на сетевой ресурс, указанный с помощью UNC-пути, начинающийся с буквы диска Z:, если он еще не используется. Такое поведение объясняется с помощью вывода команды PUSHD, запущенной в окне командной строки pushd /?. Тогда каталог с временной буквой диска становится текущим каталогом.

Это часто желаемое поведение в данном случае является контрпродуктивным, поскольку два файла Excel без пути загружаются с использованием текущего пути к каталогу в Microsoft Excel, запущенном два раза как параллельный процесс. Таким образом, командный процессор Windows сразу же продолжает обработку пакетного файла после двойного запуска Excel с двумя файлами в текущем каталоге. Исходный текущий каталог перед выполнением PUSHD восстанавливается с удалением временной буквы диска Z:, хотя Excel все еще работает с двумя открытыми файлами. Это приводит к появлению сообщения об ошибке при последующем сохранении файлов Excel.

Решение состоит в том, чтобы опустить команду PUSHD, поскольку у Excel нет абсолютно никаких проблем с открытием файла, указанного в командной строке с UNC-путем.

start "" "\\networkdirectory\subfolder\file1.xlsx"
start "" "\\networkdirectory\subfolder\file2.xls"

Первая строка аргумента в двойных кавычках интерпретируется командой НАЧАЛО как необязательный заголовок для окна командного процесса. Так что необходимо явно указать строку заголовка. В этом случае с помощью "" указывается пустая строка заголовка, поскольку Excel является приложением Windows GUI, и поэтому никакой командный процесс Windows с дополнительным окном консоли не открывается вообще. Запустите в окне командной строки start /? для получения справки по команде НАЧАЛО.

Другие вопросы по теме