使用“runas /user”运行批处理文件,似乎什么也没发生

使用“runas /user”运行批处理文件,似乎什么也没发生

如果我运行此命令,输入密码后,我看到的只是一个短暂闪烁的新cmd窗口,然后什么都没有。

runas /user:<username> batch_file.bat

我的批处理文件包含一个pause命令,因此需要我按下Enter,因此我至少希望窗口cmd能够持续存在到批处理文件中的那个点。

我做错了什么吗?该如何解决?

答案1

运行runas /user:<user> "cmd /k batch_file.bat",错误就会变得很明显:
batch_file.bat甚至找不到,因为新进程在文件夹中运行C:\WINDOWS\system32,但你的脚本肯定存储在其他地方。给它一个绝对路径:

runas /user:<user> "cmd /k "F:\ull path\to\batch_file.bat""

或者简短版本:

runas /user:<user> "F:\ull path\to\batch_file.bat"

答案2

如果批处理脚本中包含暂停命令,但执行脚本时出现闪烁但没有暂停,则是由于脚本中的语法错误造成的。

例如,你的脚本使用了if exists filename echo test
但实际上if exist filename echo test脚本会出现语法错误而无法正常执行。

要对脚本进行故障排除,请打开命令提示符,导航到脚本,然后输入要测试的命令,例如:mybatch.cmd

这将显示脚本中的错误并返回到现有的命令提示符,并将错误保留在屏幕上。

Runas 总是会在一个新窗口中启动它,但只要脚本中没有语法错误(在上一步中已经测试过),暂停就会在那里起作用。在这种情况下,您现在可以尝试使用:runas /user:myuser mybatch.cmd

答案3

似乎runas返回了一些您看不到的错误,而不是运行该.bat文件。

如果你从窗口发出命令,你至少可以看到错误cmd。然后你就可以对提供的错误做出反应。

要查看错误,您需要runas ...cmd窗口发出命令 - 要知道错误是什么,请修复它,然后您将能够正确运行批处理文件。您应该会收到pause按键提示。

当然,如果您没有收到pause消息并且计算机不等待击键 - 这意味着它不会运行批处理文件。

相关内容