使用带有UNC路径的pushd和popd命令

时间:2016-12-06 13:49:31

标签: batch-file

我正在运行以下批处理文件以在TestDialog中运行存储的包,但我收到SQL错误。如果我在服务器上运行它,它运行正常。如果我与其他用户分享它不会。我不想创建一个地图驱动器。我一直在阅读UNC Paths are not supported命令,它可能是一个选项,但不确定它是如何工作的。有人可以指导我吗?

pushd

1 个答案:

答案 0 :(得分:3)

如果愿意,您可以使用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以转到下一个存储路径。 / p>

pause之前添加popd并查看资源管理器时,您可以看到该驱动器已连接。

注意:只有在临时映射需要至少一个驱动器号尚未使用时才会有效!

修改:添加pushd "%~dp0"以消除评论中提到的警告。 %dp0代表 0 批处理文件参数的 d p ,它始终是批处理文件本身。 ~删除了潜在的引号。

Edit2:我启动了我的Windows 7 VM来自行测试。我写了一个.exe文件,只是为了执行一个批处理文件,它只是用当前时间在桌面上创建一个文件。我没有服务器,所以我无法测试它100%但是当尝试使用pushd \\localhost\c$从VM运行它时工作正常...我试图从主机建立连接,但无法得到它以这种方式工作而不是另一种方式。您是否尝试过运行在服务器上创建的批处理文件?类似的东西:

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

只是为了测试连接?

随意询问是否有不清楚的事情!