我有一个 bat 脚本,要求用户输入下一行

SET /P returnString=Enter string: %=%

现在,我希望在命令行上显示默认输入,例如:
Enter string: defaultstring

需要说明的是:如果没有输入,我不需要默认值,我希望默认值在命令行上可见并且可编辑,因此在上述情况下,可以将defaultstring替换为其他文本。

使用批处理文件中的SET可以做到这一点吗?如果没有,我该怎么做?

最佳答案

这是一个批处理+ JScript混合脚本,使用默认值进行提示。

@if (@CodeSection == @Batch) @then

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: The first line in the script is...
:: in Batch, a valid IF command that does nothing.
:: in JScript, a conditional compilation IF statement that is false.
::             So the following section is omitted until the next "[at]end".
:: Note: the "[at]then" is required for Batch to prevent a syntax error.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Batch Section

@echo off
setlocal
set "Input="
set "Default=Hello World"
title MyUniqueTitle
CScript //E:JScript //Nologo "%~f0" "MyUniqueTitle" "%Default%"
set /p "Input=> Prompt: "
if defined Input set "Input=%Input:"=%"
echo(%Input%
endlocal
exit /b 0

:: End of Batch
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
@end
////////////////////////////////////////////////////////////////////////////////
// JScript Section

try
{
    var WshShell = WScript.CreateObject('WScript.Shell');
    var Title = WScript.Arguments.Item(0);
    var Message = WScript.Arguments.Item(1);
    WshShell.AppActivate(Title);
    WshShell.SendKeys(Message);
    WScript.Quit(0);
}
catch(e)
{
    WScript.Echo(e);
    WScript.Quit(1);
}
WScript.Quit(2);

关于windows - 将可编辑文本与bat文件一起放在命令提示符中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22307919/

10-13 06:33