【问题标题】:pushd - handling multiple drives from cmdpushd - 从 cmd 处理多个驱动器
【发布时间】:2013-10-31 17:50:16
【问题描述】:

我试图弄清楚如何安装一些程序,其中组件驻留在网络路径上的两个不同驱动器上。但是,每当我使用pushd \\xyz\c$ 时,我都会得到一个映射驱动器,这意味着我无法使用任何使用知识,例如c:\install e:\mycomponents.dll。无论如何,一旦我使用了 pushd 命令,我可以做到这一点吗?

例如,我如何确保驱动器保持不变。我正在安装服务。所以看来,当我安装服务时,我需要保持路径与 .exe 的实际位置相同,这意味着我遇到了问题。

有没有办法简单地使用 pushd 但同时不实际映射驱动器?在安装服务时,当我一直在使用net use 时,我发现在映射的驱动器上安装存在问题,因为可以安装的服务在它出现时找不到实际的 .exe启动服务。

所以为了扩展这个问题,有没有办法使用net usepushd 或让我安装服务的组合来解决这个问题:c:\windows\..\installutil e:\mynode

所以要澄清一下,我需要以某种方式能够通过它们的相对驱动器(即 E:\ 和 C:\)看到远程机器上的两个驱动器 - 如果我使用映射的驱动器号,那么这意味着安装服务很痛苦,因为我无法使用路径。

问题 1:

如果我使用 pushd,那么我在服务器上看不到两个驱动器号。

net use i: %Machine1PathFRM%
pushd %Machine1PathZIP%
i:\installutil /username=ABC /password=abc %ZMN%
popd

问题 2:

如果我使用net use,那么我虽然可以使用它来安装工具,但在运行服务时,Windows 无法找到本地文件,因为它执行了某种文件映射过程,非常非常确实很烦人。

REM Install Processes Machine 1

REM net use e: %Machine1PathZIP%
REM net use i: %Machine1PathFRM%
REM i:\installutil /username=ABC /password=abc e:\%ZMN%
REM i:\installutil /username=ABC /password=abc e:\%ZPL%

【问题讨论】:

  • 您真的在使用单任务 DOS 操作系统吗?或者您只是在 windows 中使用提示窗口?
  • 您的问题现在有点混乱。您应该显示批处理脚本的相关部分

标签: batch-file cmd network-drive


【解决方案1】:

pushd //xyz/c$ 还将当前目录更改为映射的驱动器号。

pushd //xyz/c$
for /F "delims=" %%A in ("%cd%") do set "mapDrive=%%~dA"
%mapDrive%\install %mapDrive%:\mycomponents.dll

【讨论】:

  • 如果他使用的是Dos操作系统,它将无法工作:因为extended for batch命令仅适用于NT版本的windows。 CMD.exe 比原来的 command.com 强大得多。
  • @user2284570 他不能使用 DOS,因为他使用的是PUSHD
  • 如果他使用的是MS-DOS,就会出现这种情况。但是还有其他的DOS实现。大多数 FreeDos 应用程序批处理解释器都有 Pushd 命令。但是 for 命令的语法仍然与 cmd.exe 完全不同。此外,他使用了 DOS 标签(看它的描述)。今天,FreeDos 似乎比 MS-DOS 更常用。此外,他们还为 MS-DOS 环境改进了解释器:它被称为 4DOS。
  • @user2284570 pushd、c$、长文件名、列出cmd的标签,都指向Windows NT系列的命令行和批处理文件。
  • 它在批处理文件中运行。从那以后 cmd 行你应该把双百分号改为单百分号
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-12
  • 1970-01-01
  • 2014-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多