Невозможно сохранить файл после открытия в сетевом сопоставленном каталоге через файл .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
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
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 /? для получения справки по команде НАЧАЛО.

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