什么可能导致PUSHD失败?

时间:2010-03-09 18:01:38

标签: batch-file dos

我有一个完全依赖PUSHD的伟大的大脚本。但是当我输入pushd \\server1\dir1时我突然发现:

C:\Documents and Settings\userNameHere>pushd \\server1\dir1
' '
CMD does not support UNC paths as current directories.

好的,我知道CMD不支持UNC路径。这就是我使用PUSHD的原因。当我搜索这个时,我发现很多帖子说“当你遇到有关UNC路径的消息时,你应该使用PUSHD!”。好吧,我正在使用PUSHD遇到消息

我尝试使用CMD /E:ON因为PUSHD仅在启用命令扩展时才有效,显然。结果相同。

我想看看我是不是出于驱动器号码(因为PUSHD从Z开始:然后向后找到一个驱动器号)。不。

我尝试在c:\ dir(cd c:\然后pushd \\server1\dir1)启动我的cmd。

我确认驱动器在那里,我可以通过Windows资源管理器访问它。

现在我没有想法。

推送参考:Link

3 个答案:

答案 0 :(得分:5)

根据我的判断,确定答案是,如果您在Y:在映射的驱动器中,那么pushd将无效。因此,您需要执行net use y: /delete(或其他一些驱动器号),然后使用pushd映射您的驱动器。我已经映射了所有驱动器号,除了Z和A.可能Z是保留的吗?我不知道。

我的错误是检查Z:是否可用(它没有映射)。显然,如果你已经将所有内容映射到包括Y:那么它将不会映射Z:。不知道为什么。

答案 1 :(得分:1)

您需要确保启用了命令扩展。

注册表项是:

HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\EnableExtensions
and/or
HKEY_CURRENT_USER\Software\Microsoft\Command Processor\EnableExtensions

设置为0x1(已启用)或0x0(已禁用)。用户特定设置优先于机器设置。

还要确保pushd命令有可用的驱动器号。如果所有驱动器号都已映射并正在使用,那么pushd命令将以您详细说明的方式失败。

答案 2 :(得分:0)

不会像往常一样将驱动器映射到字母,而是在'pushd'之前完成这个技巧......就像在你的例子中一样

net use E: \\\\server1\\dir1
pushd E:\
....
popd