Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 在UNC路径中使用pushd和popd命令_Batch File - Fatal编程技术网

Batch file 在UNC路径中使用pushd和popd命令

Batch file 在UNC路径中使用pushd和popd命令,batch-file,Batch File,我正在运行以下批处理文件以运行SQL中的存储包,并且我得到一个UNC路径不受支持的错误。如果我在服务器上运行它,它会正确运行。如果我与其他用户共享,则不会。我不想创建地图驱动器。我一直在读关于pushd命令的书,它可能是一个选项,但不确定它是如何工作的。有人能指引我吗 如果愿意,您可以使用pushd作为net use的快速版本。 正如您已经观察到的,不支持UNC路径,因此您必须解决这个问题。命令pushd\\Server\Path\将在它运行的机器上创建一个网络驱动器,如Z:\,自动切换到它(如

我正在运行以下批处理文件以运行
SQL
中的存储包,并且我得到一个
UNC路径不受支持的错误。如果我在服务器上运行它,它会正确运行。如果我与其他用户共享,则不会。我不想创建地图驱动器。我一直在读关于
pushd
命令的书,它可能是一个选项,但不确定它是如何工作的。有人能指引我吗


如果愿意,您可以使用
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驱动和p路径。
~
删除可能的周围引号

Edit2:我启动了我的Windows7虚拟机,自己测试这个。我编写了一个.exe文件,它的唯一目的是执行一个批处理文件,该批处理文件将在当前时间在桌面上创建一个文件。我没有服务器,因此无法100%测试它,但当尝试使用
pushd\\localhost\c$
从VM运行它时,它工作正常。。。我试图从主机建立连接,但无法使它以这种方式工作,也无法以另一种方式工作。您是否尝试运行在服务器上创建的批处理文件?比如:

%time%>"%USERPROFILE%\Desktop\myFile.txt"
只是为了测试连接


如果有不清楚的地方,请随时询问

阅读:我完全按照您所说的做了,并暂停了它,可以看到创建了驱动器号y,但仍然不支持get UNC路径。请查看我答案中的代码。请注意,我已删除导致问题的部分路径:
\\Server\c$
。如果这不能解决问题,是否还有其他消息?'\\ServerName\C$\BatFile CMD.exe是以上述路径作为当前目录启动的。不支持UNC路径。默认为windows目录。C:\Winddows>pushd\\servername\C$Y:\>“程序文件(x86)\Microsoft SQL Server\120\DTS\Binn\DTExec.exe”/f“程序包\Unapplied and Patient Balances.dtsx”Y:\popdt当我暂停时,它是这样说的,这是您希望它做的事情吗?因为没有任何东西表明
找不到指定的路径
,所以它应该有。在链接为评论的elzooilogico帖子中,它写道可以添加
pushd%dp0
以消除警告。我会编辑的。
%time%>"%USERPROFILE%\Desktop\myFile.txt"