Toplu dosya ağ paylaşımından "UNC yolu desteklenmiyor" mesajı olmadan nasıl çalıştırılır?


88

Bir ağ paylaşımından bir toplu iş dosyası çalıştırmaya çalışıyorum, ancak şu mesajı almaya devam ediyorum: "UNC yolu desteklenmiyor. Windows dizinine varsayılan yapılıyor." Toplu iş dosyası şurada bulunur \\Server\Soft\WPX5\install.bat. Yönetici olarak oturum açtığımda, Windows 7 Masaüstümden, \\Server\Soft\WP15\install.bat'a gidip çift tıklıyorum, işte o zaman "UNC yolu desteklenmiyor" mesajı alıyorum. İleti. Haritalama sürücüsünün çalışmayacağını belirten bazı öneriler çevrimiçi buldum, ancak sembolik bir bağlantı kullanmak bu sorunu çözecektir, ancak sembolik bağlantı benim için çalışmadı. Toplu iş dosyası içeriğim aşağıdadır, yapmaya çalıştığım şeyi gerçekleştirmeme yardımcı olabilecek her türlü yardımı takdir ediyorum. Temel olarak, toplu iş dosyasını içinden çalıştırabilmek istiyorum \\Server\Soft\WP15\install.bat.

Toplu dosya içeriği

mklink /d %userprofile%\Desktop\WP15 \\server\soft\WP15
\\server\soft\WP15\setup.exe
robocopy.exe "\\server\soft\WP15\Custom" /copyall "C:\Program Files (x86)\WP\Custom Templates"
Regedit.exe /s \\server\soft\WPX5\Custom\Migrate.reg

Ayrıca, kurulum tamamlandıktan sonra sembolik bağlantıyı nasıl kaldırırım?


2
Yıllar sonra, ancak başkası için faydalı olabilir: Sembolik bağlantıyı oluşturduktan sonra, neden orijinal yola başvurmaya devam ediyorsunuz? Sembolik bağlantının amacı, size bunun yerine kullanabileceğiniz yerel bir yol vermektir. Örneğin deme "\\ yumuşak sunucu \ \ WP15 \ setup.exe", "demek% userprofile% \ Desktop \ WP15 \ setup.exe
ToolmakerSteve

cidden bu bir ServerFault.com sorusu
Junchen Liu

Yanıtlar:


137

PUSHD ve POPD sizin durumunuzda yardımcı olacaktır.

@echo off
:: Create a temporary drive letter mapped to your UNC root location
:: and effectively CD to that location
pushd \\server\soft

:: Do your work
WP15\setup.exe
robocopy.exe "WP15\Custom" /copyall "C:\Program Files (x86)\WP\Custom Templates"
Regedit.exe /s WPX5\Custom\Migrate.reg

:: Remove the temporary drive letter and return to your original location
popd

Tip PUSHD /?fazla bilgi için komut satırından.


2
Hızlı yanıtlar ve öneriler için teşekkür ederiz. Önerinizin işe yarayacağını umuyordum ama maalesef bende işe yaramadı. Aynı mesajı aldım: "... UNC yolları desteklenmiyor. Windows dizinine varsayılan yapılıyor." Yönetici grubunun bir üyesi olarak oturum açmışken dosyayı çalıştırmış olmama rağmen, Kullanıcı Hesabı Denetimi iletişim kutusunda Evet veya Hayır'ı tıklattım.
Yah

26
@Stew .bat dosyanızın başlangıcına şunu koyun: pushd %~dp0Bu, dizini bat dosyanızı içeren dizine değiştirmesini sağlamalıdır. Yine de uyarıyı yazdıracaktır, ancak daha sonra her zamanki gibi çalışması gerekir. Yarasa dosyası başka bir yerde '% ~ dp0' kullanıyorsa, bununla ilgili sorunları olabilir, bu durumda %~dp0yarasa dosyasının başlangıcında '//' ile başlayıp başlamadığını tespit edebilir ve öyleyse pushd, ve ardından bat dosyasını tekrar, sonra goto :EOF. Bu, yeni eşlenen dizinde çalışmasına neden olacaktır.
Grant Peters

cmd uzak bilgisayarda mı yoksa yerelde mi yürütülecek?
Dingxin Xu

@DingxinXu - Uzak kod yerel olarak çalışacaktır. Kodu uzak bilgisayarda çalıştırmak istiyorsanız, PsExec gibi bir şeye ihtiyacınız var .
dbenham

3
@balki - Evet, uzak komutları başka bir komut dosyasına koyun. Sonra PUSHD2. betiği üzerinden yürütün CMD /Cve ile takip edin POPD. Kontrol, CMD /CCTRL-C ile sonlandırılmış olsa bile , komut dosyası çıktıktan sonra ana betiğe geri dönecektir .
dbenham

29

Bu güvenlik kontrolünden kaçınmak için bir kayıt defteri ayarı vardır (yine de kendi sorumluluğunuzda kullanın):

Kayıt defteri yolu altında

   HKEY_CURRENT_USER
     \ Yazılım
       \ Microsoft
         \ Komut İşlemcisi

DisableUNCCheck REG_DWORD değerini ekleyin ve değeri 0 x 1 (Hex) olarak ayarlayın.

Not: Windows 10 sürüm 1803'te, ayar HKLM: HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Command Processor altında bulunuyor gibi görünüyor.


1
Nedenini bilmiyorum ama "Komut İşlemcisi" klasörümü şu yolda buldum: HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Command Processor
aoh

Teşekkürler, yardımcı oldu. Ancak Windows 10 1803'te, @aoh'un işaret ettiği gibi HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Command Processor.
Edwin Yip

Cevabı o zaman güncelleyeceğim; hassasiyet için teşekkürler
Vinzz

26

clsEn iyi cevap olduğunu hissediyorum . UNC mesajını kimse görmeden gizler. Bunu @pushd %~dp0hemen ardından ile birleştirdim , böylece komut dosyasını açıyor ve konumu tek adımda haritalandırıyor, böylece daha fazla UNC sorunu önleniyor.

cls
@pushd %~dp0
:::::::::::::::::::
:: your script code here
:::::::::::::::::::
@popd

Notlar:

pushd çalışma dizininizi yeni eşlenen sürücüdeki komut dosyası konumuna değiştirir.

popd sonunda, eşlenen sürücüyü temizlemek için.


4
popdSonunda ihtiyacım vardı (Windows 7), aksi takdirde eşlenen sürücüler pencere kapatıldıktan sonra etrafta kaldı.
Patrick

1
Gayet iyi çalışıyor. Teşekkür ederim.
Jonas_Hess

1
Windows 10'da çalışması gerekiyorsa, hala "Komut İstemi" dir.
Grallen

11

Temel olarak, bu mesajı görmeden bir UNC yolundan çalıştıramazsınız.

Genelde yaptığım şey CLSsenaryonun en üstüne bir koymaktır , böylece bu mesajı görmeme gerek kalmaz. Ardından, kullanmanız gereken ağ paylaşımındaki dosyaların tam yolunu belirtin.


1
Teşekkür ederim. Başka bir çözüm yoksa bunu son seçenek olarak deneyeceğim.
Yah

@jameslr cevabı işe yarayacak, ancak genellikle yapmak istediğimden daha fazla iş (yazmak). Bu yüzden hatadan kurtulmak için ekranı temizlemek benim için yeterince iyi. :)
aphoria

8

Sadece Windows Gezgini'nde sunucu paylaşımına göz atabilmem ve ardından toplu iş dosyasını çift tıklatabilmem gerekiyordu. @dbenham beni senaryom için daha kolay bir çözüme götürdü ( popdendişelenmeden):

:: Capture UNC or mapped-drive path script was launched from
set NetPath=%~dp0

:: Assumes that setup.exe is in the same UNC path
%NetPath%setup.exe

:: Note that NetPath has a trailing backslash ("\")
robocopy.exe "%NetPath%Custom" /copyall "C:\Program Files (x86)\WP\Custom Templates"
Regedit.exe /s %NetPath%..\WPX5\Custom\Migrate.reg

:: I am not sure if WPX5 was typo, so use ".." for parent directory
set NetPath=
pause

@ peter-mortensen, ilk kelimeyi büyük harf yapmak için senaryodaki yorumları 4x düzenledi Düzenlemeye değer mi? Cümle yapmak için neden sonuna bir nokta koymuyorsunuz? Şuna ne dersiniz: Bu sadece bir yorum olduğu için, daha net bir anlayış için yorumlarda ve değişkenlerde (veya vurgu) HARİÇ yorumlarda ilk kelimede kasıtlı olarak büyük harf KULLANMAYIN.
JayRO-GreyBeard

4

Toplu işi doğrudan gezginden başlatmak yerine, toplu işe bir kısayol oluşturun ve kısayolun özelliklerinde başlangıç ​​dizinini% TEMP% gibi yerel bir yola ayarlayın.

Sembolik bağı silmek için rmdir komutunu kullanın.


1
Bu işe yarayacaktır, ancak yalnızca bir kısayoldan başlatmak istiyorsanız. Bir komut satırından çalıştırmak veya başka bir toplu iş dosyasından çağrı yapmak istemeniz yardımcı olmaz.
aphoria

2
Başka bir toplu iş veya komut satırından çağrı yapmak istiyorsanız şu şekilde çağrı yapabilirsiniz: start / d% TEMP% \\ Server \ Soft \ WP15 \ install.bat
jameslr

2

Son zamanlarda Windows 7'de bir ağ paylaşım sürücüsündeki bir toplu iş dosyasıyla çalışırken aynı sorunla karşılaştım.

Benim için çalışan başka bir yol, sunucuyu Windows Gezgini aracılığıyla bir sürücüye eşlemekti: Araçlar -> Ağ sürücüsünü eşle. Sunucunuz için bir sürücü harfi ve klasör yolu verin. Ağ paylaşımıyla çalıştığım için, genellikle onunla eşleme yapmak onu daha kullanışlı hale getiriyor ve "UNC yolu desteklenmiyor" hatasını çözdü.


2

Durumum biraz farklı. Dahili iş uygulamalarının en son sürümünü dağıtmak için başlangıçta bir toplu iş dosyası çalıştırıyorum.

Bu durumda Windows Kayıt Defteri Çalıştırma Anahtarını aşağıdaki dizeyle kullanıyorum

cmd /c copy \\serverName\SharedFolder\startup7.bat %USERPROFILE% & %USERPROFILE%\startup7.bat

Bu, başlangıçta doğru sırayla iki komutu çalıştırır. İlk olarak, toplu iş dosyasını yerel olarak kullanıcının iznine sahip olduğu bir dizine kopyalamak. Daha sonra aynı toplu iş dosyasını yürütür. Yerel bir c: \ InternalApps dizini oluşturabilir ve tüm dosyaları ağdan kopyalayabilirim.

Orijinal posterin sorusunu çözmek için muhtemelen çok geç ancak başka birine yardımcı olabilir.


1

Bu, kullandığım RegKey:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor]
"DisableUNCCheck"=dword:00000001

1

Bu çok eski bir iş parçacığı, ancak hala Windows 7 kullanıyorum. :-)

Hiç kimsenin hesaba katmadığı bir nokta var, bu muhtemelen Windows 10 kullanıcılarına da yardımcı olacaktır.

Komut Uzantıları etkinleştirilirse, PUSHD komutu, normal sürücü harfine ve yoluna ek olarak ağ yollarını da kabul eder.

Dolayısıyla, PUSHD'yi kullanmayı planlıyorsanız, bariz ve en basit cevap, toplu komut dosyasında komut uzantılarını etkinleştirmek olabilir. En azından, bu, bir ağ yolu ile PUSHD'yi kullanırken karşılaşabileceğiniz sorunları azaltmalıdır.


0

Env windows10 2019 lts sürümüm ve bu iki binray verisini ekliyorum, bu hatayı düzeltin

Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command ProcessorUNCCheck value 1 Computer\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Command Processor Disable UNCCheck value 1


-1

Windows kayıtlarını düzenlemek buna değmez ve güvenli değildir Map network drive, ağ paylaşımını yerel sürücülerinizden birinden yüklenmiş gibi kullanın ve yükleyin.

görüntü açıklamasını buraya girin


1
Bunun Kai'nin cevabından farkı nedir?
SomethingDark

Fark etmedim tbh, belki ekran görüntüleri bir fark yaratan bin kelimeye bedeldir?
Adham Sabry
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.