如果我运行此命令,输入密码后,我看到的只是一个短暂闪烁的新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
消息并且计算机不等待击键 - 这意味着它不会运行批处理文件。