【问题标题】:Running Batch File Using Java ProcessBuilder does not recognized Network drive使用 Java ProcessBuilder 运行批处理文件无法识别网络驱动器
【发布时间】:2021-02-06 10:06:18
【问题描述】:

我有一个使用 ProcessBuilder 执行动态批处理文件的 java 程序 (jar)。

Process process = (new ProcessBuilder(commands)).start();

我有一个像这样的简单批处理文件,Z --> 是一个网络驱动器。假设我的批处理文件位置在 my_batch.bat 中。

copy Z:\Download\*.csv D:\Download\

如果我从命令提示符执行这个批处理文件,它会成功运行。但是,如果我使用 java 程序执行,则该程序不起作用(没有任何反应)。但是,如果我像下面这样更改批处理文件,它就可以工作。 E-> 是普通驱动器(不是网络驱动器)。

copy E:\Download\*.csv D:\Download\

我不知道为什么会发生这种情况,请帮忙。 我的操作系统是 Windows。

【问题讨论】:

  • 网络驱动器映射仅针对特定用户进行。添加到您的批处理命令whoami & pause 双向运行并比较输出。
  • 是的,你是对的,从 java 程序执行的批处理文件是“nt authority\system”,如果我手动运行批处理文件,whoami 的结果是“my_domain\administrator”,那么如何不是以“nt authority\system”而是以管理员身份运行我的程序,或者也授予对“nt authority\system”的访问权限?
  • 嗨@user2956477,现在我可以将java程序更改为以用户管理员身份运行,因为我的java程序作为服务运行,现在whoami显示相同的用户“my_domain\administrator”但仍然我不能让它工作。
  • 尝试将net use 添加到您的批处理中,并检查脚本是否将驱动器 Z: 视为映射。如果是,请添加dir z: 并检查输出。如果工作正常,那么问题可能在其他地方。
  • 来自java程序,显示Z盘,但状态不可用,如果我手动运行批处理,显示Z盘,状态正常。

标签: java spring-boot batch-file command-prompt


【解决方案1】:

我通过将这一行放在我的批处理文件中来解决它。

net use Z: \\Computer\shared /user:DOMAIN\username password

在这个过程之后,在我的批处理文件的末尾使用它。

net use Z: /d

感谢在评论部分帮助我的人。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-23
    • 2016-12-11
    • 1970-01-01
    • 1970-01-01
    • 2018-02-27
    • 1970-01-01
    • 2014-07-04
    • 2021-07-26
    相关资源
    最近更新 更多