【发布时间】:2011-09-20 08:23:39
【问题描述】:
在 Windows 上使用 cmd,很容易通过 pushd 将驱动器号分配给 UNC 路径:
C:\Windows\> pushd \\server\share\path
Y:\> popd
C:\Windows\>
但是,我希望能够对 本地路径 做同样的事情,因为它会缩短文件路径,而且我必须使用不支持具有很长路径的文件的命令。 p>
下面的想法是在脚本中没有硬编码G:,因为它可以在另一台机器上使用。
subst G: .
pushd G:\
(other commands)
popd
subst G: /d
我试过pushd \\?\%CD%,但不幸的是它不起作用……
有没有人有这方面的魔术?
谢谢
【问题讨论】:
-
路径很长有什么问题?您是否考虑过只使用
net use? -
@tenour:某些应用程序不支持它们(缓冲区太小)。
net use需要像 subst 这样的驱动器号。 -
对我有用的一件事是使用 8.3 路径,您不太可能遇到 260 个字符的 MAX_PATH。
-
@ewall:从 Windows 7 开始,你不能依赖 8.3 路径的可用性。
-
@Benoit 引用真实。其实disable 8.3 paths all the way back to WinNT是可以的。所以使用 8.3 路径绝对不是可靠的、万无一失的方法。另一方面,如果您不能轻松use the Unicode/"wide" Win32 API calls,它通常适用于一次性系统管理员脚本。