2016-12-06 109 views
2

我正在運行以下批處理文件以在SQL中運行存儲的程序包,並且出現UNC Paths are not supported錯誤。如果我在服務器上運行它,它會正確運行。如果我與其他用戶分享,則不會。我不想創建地圖驅動器。我一直在閱讀關於pushd命令,它可能是一個選項,但不知道它是如何工作的。有人可以指導我嗎?對UNC路徑使用pushd和popd命令

"\\Server\c$\Program Files (x86)\Microsoft SQL Server\120\DTS\Binn\DTExec.exe" /f "\\Sever\c$\Packages\Unapplied and Patient Balances.dtsx" 
+1

閱讀[this](http:// stackoverflow。com/questions/9013941/how-to-run-batch-file-from-network-share-without-unc-path-are-supported-me) – elzooilogico

+0

閱讀此:['pushd'](http:// ss64.com/nt/pushd.html)和['popd'](http://ss64.com/nt/popd.html) – aschipfl

回答

2

你可以,如果你會使用pushd作爲一個快速版本的net use
正如您已經觀察到UNC路徑不受支持,所以您必須解決。命令pushd \\Server\Path\將在它運行的機器上創建一個網絡驅動器,如Z:\,自動切換到它(如cd /d Z:\),並推送堆棧上的路徑(稍後適用)。

然後,您可以使用它來訪問服務器目錄:

pushd "%~dp0" 
pushd \\Server\c$ 
"Program Files (x86)\Microsoft SQL Server\120\DTS\Binn\DTExec.exe" /f "Packages\Unapplied and Patient Balances.dtsx" 
popd 

應該做的伎倆。

命令popd用於
1)刪除網絡驅動器和
2)從路徑

所以你實際上可以可以先推你需要的所有服務器路徑(彈出目錄時〜 20基於你的文件系統),並在一個循環中爲每個路徑執行相同的操作並執行popd以進入下一個存儲路徑。

popd前面添加pause並查看資源管理器時,可以看到驅動器已連接。

注意:只有當至少有一個驅動器號仍未被使用時纔會起作用,因爲它是臨時映射所需的!

編輯:添加pushd "%~dp0"擺脫評論中提到的警告。 %dp0代表d rive和p ath th批處理文件參數始終是批處理文件本身。 ~刪除潛在的周邊報價。

編輯2:我開始使用我的Windows 7虛擬機來自行測試。我寫了一個.exe文件,它只是爲了執行一個批處理文件,它只是在當前時間在桌面上創建一個文件。我沒有服務器,所以我不能測試它到100%,但試圖從虛擬機使用pushd \\localhost\c$運行時,它工作正常......我試圖建立從主機的連接,但無法讓它以這種方式工作也不是另一個。您是否嘗試過運行您在服務器上創建的批處理文件?例如:

%time%>"%USERPROFILE%\Desktop\myFile.txt" 

只是爲了測試連接?

隨意問問是否不清楚!

+0

我完全按照您的說法做了並暫停了它,並且可以看到驅動器號y是創建但仍然獲得UNC路徑不受支持。 –

+0

看看我的答案中的代碼。請注意,我刪除了導致問題的路徑部分:'\\ Server \ c $'。如果這不能解決問題,是否還有其他消息? – geisterfurz007

+0

'\\ ServerName \ C $ \ BatFile CMD.exe是以上述路徑作爲當前目錄啓動的。 UNC路徑不受支持。默認爲windows目錄。 C:\ Winddows> pushd \\ servername \ c $ Y:\>「Program Files(x86)\ Microsoft SQL Server \ 120 \ DTS \ Binn \ DTExec.exe」/ f「Packages \ Unapplied and Patient Balances.dtsx」 Y:\ popd –