使用Java ProcessBuilder运行批处理文件无法识别网络驱动器

使用Java ProcessBuilder运行批处理文件无法识别网络驱动器,java,spring-boot,batch-file,command-prompt,Java,Spring Boot,Batch File,Command Prompt,我有一个java程序(jar),它使用ProcessBuilder执行动态批处理文件 Process process = (new ProcessBuilder(commands)).start(); net use Z: \\Computer\shared /user:DOMAIN\username password net use Z: /d 我有这样一个简单的批处理文件,Z-->是一个网络驱动器。假设我的批处理文件位置在my_batch.bat中 copy Z:\Download\*

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

Process process = (new ProcessBuilder(commands)).start();
net use Z: \\Computer\shared /user:DOMAIN\username password
net use Z: /d
我有这样一个简单的批处理文件,Z-->是一个网络驱动器。假设我的批处理文件位置在my_batch.bat中

copy Z:\Download\*.csv D:\Download\
如果从命令提示符下执行此批处理文件,它将成功运行。但是如果我使用java程序执行,程序就不能工作(什么也不会发生)。但是,如果我像下面这样更改批处理文件,它就会工作。E->是常规驱动器(不是网络驱动器)

我不知道为什么会这样,请帮忙。
我的操作系统是Windows。

我把这一行放在批处理文件中解决了这个问题

Process process = (new ProcessBuilder(commands)).start();
net use Z: \\Computer\shared /user:DOMAIN\username password
net use Z: /d
在这个过程之后,在批处理文件的末尾使用这个

Process process = (new ProcessBuilder(commands)).start();
net use Z: \\Computer\shared /user:DOMAIN\username password
net use Z: /d

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

网络驱动器映射仅针对特定用户进行。添加到批处理命令
whoami&pause
双向运行并比较输出。是的,您是对的,从java程序执行的批处理文件是“nt authority\system”,如果我手动运行批处理文件,whoami的结果是“my\u domain\administrator”,那么如何不以“nt authority\system”的身份运行我的程序呢但是作为管理员,或者授予对“nt authority\system”的访问权?Hi@user2956477,现在我可以将java程序更改为以用户管理员的身份运行,因为我的java程序作为服务运行,现在whoami显示的是同一个用户,即“我的域\管理员”但我仍然无法使其工作。请尝试将
net use
添加到批处理中,并检查脚本是否看到驱动器Z:映射。如果是,添加
dir z:
并检查输出。如果工作正常,则问题可能由seomewhere.from java程序显示Z驱动器,但状态不可用;如果手动运行批处理,则显示Z驱动器,状态为OK。