2016-12-06 68 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 –