我需要在 Windows 中为一个实用程序编写批处理文件。但是每次我从命令提示符运行时,该实用程序都会询问用户名和密码。我想在命令提示符中提示时传递用户名和密码。现在命令运行后,用户名和密码的问题出现了 qs 2 个单独的问题,例如: enter uname: enter pwd:
这成为一个问题,因为仅将 %1 和 %2 作为参数传递并没有帮助,因为 uname 和 pwd 是作为单独的 qs 来的。请帮我在windows中写一批……我对windows prog完全陌生……
我需要在 Windows 中为一个实用程序编写批处理文件。但是每次我从命令提示符运行时,该实用程序都会询问用户名和密码。我想在命令提示符中提示时传递用户名和密码。现在命令运行后,用户名和密码的问题出现了 qs 2 个单独的问题,例如: enter uname: enter pwd:
这成为一个问题,因为仅将 %1 和 %2 作为参数传递并没有帮助,因为 uname 和 pwd 是作为单独的 qs 来的。请帮我在windows中写一批……我对windows prog完全陌生……
您是否检查过该实用程序:
我假设您检查了所有这些,除了手动输入用户名和密码之外别无选择。
在这种情况下,您应该看看AutoHotkey。
它用于创建可以自动化 UI 输入的脚本,特别是运行需要键盘和鼠标控制的应用程序。
还有一个名为SendKeys.net的小实用程序用于批处理文件。
虽然没有测试过。
此任务可以通过 Windows 中的 VBS 完成。您可以使用 SendKeys() 来模拟键盘操作。它的工作方式类似于 Linux 中的命令“expect”。BAT 在这里帮不了你。
雷诺是对的,命令行参数将是最好的解决方案。查看您的实用程序手册或尝试实用程序.exe /?
以下解决方案可能有效(或可能无效)将您的答案写入文件(例如“credentials.txt”)(确保它仅包含两行)
myusername
mypassword
然后尝试
myutility < credentials.txt
出于安全原因,如果我编写了该实用程序,这将不起作用。
您可以调用此批处理-HTA-VBScript 混合文件(GUI 登录提示):
<!-- :
:: LoginGUI.bat | Wasif Hasan | Sep 2020
:: This is a Batch-HTA-VBScript hybrid that will show a GUI window to login
:: Save it as a .bat file and run it in your other batch files
:: and returns the username and password as a result (to STDOUT) (in "username;password" format)
:: If you enter no password in the dialog it will show an error message box and persist
:: Arguments: "BatchFilePath" "prompt (To Show beside the password box)" BoolAllowBlankUsername BoolAllowBlankPassword
:: Default prompt is "password"
@echo off & setlocal EnableDelayedExpansion
if "%*"=="" (
for /f "tokens=* delims=" %%a in ('echo "Password:" False False ^| mshta.exe "%~f0"') do set "pass=%%a"
) else (
for /f "tokens=* delims=" %%a in ('echo %* ^| mshta.exe "%~f0"') do set "pass=%%a"
)
echo !pass! & exit /b 0
-->
<!DOCTYPE html>
<html>
<head>
<title>Password box</title>
<hta:application
applicationName="Password box"
border="thin"
maximizeButton="no"
minimizeButton="no"
showinTaskbar="no"
scroll="no"
singleInstance="yes"
contextMenu="no"
selection="no"
/>
<script type="text/vbscript">
Sub Window_OnLoad()
Dim fso2, strPrompt, dblQuote
window.resizeTo 320,180
Set fso2 = CreateObject("Scripting.FileSystemObject").GetStandardStream(0)
strPrompt = fso2.ReadLine
dblQuote = Chr(34)
strPromptX = Split(strPrompt," ")
strPrompt = strPromptX(0)
strPrompt = Replace(strPrompt, dblQuote, "")
Document.All.prompt.innerHTML = strPrompt
document.All.username.Focus
End Sub
Sub Validate()
Dim fso, GetPassword, GetUsername
GetPassword = Document.All.Password.Value
GetUsername = Document.All.username.Value
If GetPassword = "" Then
If Not allowBlankPassword = True Then
MsgBox "Please enter a password!",48,"Password box"
End If
ElseIf GetUsername = "" Then
If Not allowBlankUsername = True Then
MsgBox "Please enter a username!",48,"Password box"
End If
Else
Set fso = CreateObject("Scripting.FileSystemObject").GetStandardStream(1)
window.Close(fso.write(GetUsername & ";" & GetPassword))
End If
End Sub
</script>
</head>
<body style="background-color:lightblue;font-family:Tahoma;">
<div align="center">
<span id="username_l">Username:</span>
<input type="text" size="20" id="username" /><br /><br />
<span id="prompt">Password:</span>
<input type="password" size="20" id="Password" />
<p><input type="button" value="Login" onClick="Validate()" /></p>
</div>
</body>
</html>