Я пытаюсь изменить каталоги на файловом сервере, например:
cd \\someServer\\someStuff\
Однако я получаю следующую ошибку:
CMD не поддерживает пути UNC в качестве текущих каталогов
Какие у меня есть варианты перехода в этот каталог?
Если вы подумываете о написании сценария, всегда полезно узнать о pushd
и popd
команды. Иногда вы не можете быть уверены, какие буквы дисков уже используются на машине, на которой будет выполняться сценарий, и вам просто нужно выбрать следующую доступную букву диска. поскольку net use
потребует указать диск, вы можете просто использовать pushd \\server\folder
а потом popd
когда вы закончите.
Или вы можете переключить свою оболочку на PowerShell. Он полностью поддерживает пути UNC.
Вы могли бы использовать net use
чтобы сопоставить сетевой диск с UNC-путем, а затем перейдите к подключенному диску.
Чуть более подробное объяснение pushd здесь: http://shortfastcode.blogspot.com/2010/05/how-to-deal-with-cmd-does-not-support.html
А также явное отображение диска, чтобы cmd
может справиться, что может понадобиться и другим утилитам, вы также можете попробовать альтернативную командную оболочку, такую как PowerShell.
Это сработало для меня в Win8x64:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor]
"DisableUNCCheck"=dword:00000001
Вы также должны иметь возможность сделать это в HKCU, просто убедитесь, что вы выйдете из системы и снова включитесь.
согласно @pk используйте pushd & popd, вот пример.
используйте pushd для создания временного виртуального диска и после этого сделайте popd, чтобы удалить временный виртуальный диск
:selectFolder
REM Confirm which Folder structure
set /p location="Delete files for which QA environment: (P)retoria, (C)ape, (L)uanda or (Q)uit? (C/L/P/Q)"
REM I option allows for upper and lower case
if /I "%location%"=="C" set folder="\\Tfwcqa\tfwcqa\EORDERS"
if /I "%location%"=="L" set folder="\\Tfluaqa\tfluaqa\EORDERS"
if /I "%location%"=="P" set folder="\\Tfptaqa\tfptaqa\EORDERS"
if /I "%location%"=="Q" goto endBatch
REM you can not cd to a network drive so we use pushd to create a temporary virtual drive
REM cd /d %folder%
pushd %folder%
DIR /S
REM popd deletes the temporary virtual drive
popd
Разве не команда соединения работать здесь?
Эй, вот и попробовать ...
Перейти к эта страница и ищите "разрешить путь unc" ... это сработает?
У вас есть дополнительная обратная косая черта в вашем UNC. Уместна двойная обратная косая черта ПЕРЕД "someServer". Двойная обратная косая черта перед "someStuff" должна быть одинарной обратной косой чертой, не так ли?
Поэтому постарайтесь
\\ someServer \ someStuff \ "
НЕ
\\ someServer \\ someStuff \ "
Вместо того
cd \\server_name\folder_name
использовать
pushd \\server_name\folder_name
..EXE path here..
popd
Ниже код полностью работал у меня, см. Пример
@echo off
echo "Email payment to prod payment sync program started"
pushd \\Server_name\it\0a. IT Projects\XYZ Project\Report Builds\Emailpayment to prod payment sync build
"\\Server_name\it\0a. IT Projects\XYZ Project\Report Builds\Emailpayment to prod payment sync build\xyz.exe"
popd
pushd \\Server_name\it\0a. IT Projects\XYZ Project\Report Builds\Daily Invoice report build
"\\Server_name\it\0a. IT Projects\XYZ Project\Report Builds\Daily Invoice report build\XYZ1.exe" %-5
popd
echo "Daily invoice report program ended"