我需要在Windows中为一个实用程序编写批处理文件。但是每次从命令提示符运行时,实用程序都会要求输入用户名和密码。我想在命令提示符下提示时传递用户名和密码。现在命令运行后,用户名和密码的问题来自qs 2单独的问题,如: 输入uname: 输入密码:
这成为一个问题,因为只作为参数传递%1和%2没有帮助因为uname和pwd将作为单独的qs出现。请帮我在windows中写一个批处理...我是Windows编程的全新...
答案 0 :(得分:1)
您是否检查过该实用程序:
我假设您检查了所有这些,除了手动输入用户名和密码之外别无选择。
在这种情况下,你应该看一下AutoHotkey 它用于创建可以自动化UI输入的脚本,特别是运行需要键盘和鼠标控制的应用程序。
还有一个名为SendKeys.net的小工具用于批处理文件 虽然没有测试过。
答案 1 :(得分:0)
Renauld是对的,命令行参数将是最佳解决方案。查看实用程序手册或尝试utility.exe /?
以下解决方案可行(或可能不行) 把你的答案写在一个文件上(例如“credentials.txt”)(确保它只包含两行)
myusername
mypassword
然后尝试
myutility < credentials.txt
出于安全原因,如果我编写该实用程序,这将无效。
答案 2 :(得分:0)
此任务可以通过Windows中的VBS完成。您可以使用SendKeys()来模拟键盘操作。它的工作方式类似于Linux中的'expect'命令。 BAT无法帮助你。
答案 3 :(得分:0)
您可以调用此批处理-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>