我正在编写Windows批处理脚本。默认情况下,pause
命令将暂停脚本并显示文本“按任意键继续...”。
如何修改此文字以向用户显示我自己的文字?
感谢。 :)
答案 0 :(得分:85)
您可以使用以下命令隐藏pause
命令中的文本:
pause >nul
然后你可以回复你自己的消息,告诉用户它已暂停:
echo The batch file has paused
所以完整的脚本可能如下所示:
@echo off
echo Hello World!
echo The batch file has paused
pause >nul
希望这会有所帮助:)
答案 1 :(得分:13)
这是一个单行
pause>nul|set/p =any key to exit ...
它稍短(少一点' nul') 比Aacini的解决方案:
set/p<nul =any key to exit ...&pause>nul
并且,&#39;暂停&#39;首先,我认为 它的目的是什么更清楚。
同时
cursor stays on the same line
ANY key works, not just 'enter'
然而,与假设
一样,它们都不是那么好 pause/t any key to exit ...
很难相信&#39;暂停&#39;幸存了下来 35年没有这种能力; - )
带有回声的解决方案&#39;有可能不受欢迎
尾随新线,
但确实提供了多行文字:
Pause>nul|(echo All your bases &echo are belong to us &echo Press any key to die...)
BV
答案 2 :(得分:7)
“不是我真正想要的,我想知道是否有办法实际更改Pause命令的输出文本,而不仅仅是解决方法。” - 哈希姆
是的,你可以!但是你必须知道PAUSE是CMD.EXE程序的内部命令,因此,要修改PAUSE显示的消息,必须修改CMD.EXE文件。为此,您必须使用可能修改二进制文件的编辑器。我通过以下步骤使用了XVI32程序:
1- Copy CMD.EXE file to a new folder created for this purpose: COPY %COMSPEC%
2- Edit the copy of CMD.EXE with XVI32.EXE program:
2.1- Locate the message you want. Messages are stored in 16-bits elements with the high byte equal zero. To locate a message:
2.1.1- In Search> Find> Text string> enter the message you want.
2.1.2- Convert Text -> Hex
2.1.3- Insert a zero after each letter-value
2.1.4- Press Ok
2.2- Modify the message for the new one. Modify existent letters only and keep zeros in place. Note that you can NOT extend any message.
2.3- End the edition and save the modified file.
您现在可以运行CMD.EXE来获取修改后的PAUSE消息。我对这个程序进行了测试:
C:\DOCUME~1\Antonio\MYDOCU~1\My Webs\XVI32 Hex File Editor
>pause
Press any key to continue . . .
C:\DOCUME~1\Antonio\MYDOCU~1\My Webs\XVI32 Hex File Editor
>cmd
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
C:\DOCUME~1\Antonio\MYDOCU~1\My Webs\XVI32 Hex File Editor
>pause
Oprime una tecla para seguir. .
读到这个答案的每个人的注意事项:
注意1 :请不要发表评论,说不得修改CMD.EXE文件!我也是这么想。我刚刚发布了这个答案,所以OP意识到了他真正要求的......
注意2 :使用文本编辑器(如记事本)查看CMD.EXE文件非常有趣。您可能会看到所有内部命令,有趣的详细信息(如= ExitCode和= ExitCodeAscii变量),所有错误消息等。例如,这些是内部命令:
C O L O R T I T L E C H D I R C L S C M D E X T V E R S I O N
D E F I N E D C O P Y P A T H P R O M P T P U S H D P O P D
A S S O C F T Y P E D A T E D E L D I R E C H O E N D L O C A L
E R A S E E R R O R L E V E L E X I T E X I S T B R E A K F O R
G O T O I F K E Y S M K D I R M D N O T P A U S E R D
R E M M O V E R E N A M E R E N R M D I R S E T S E T L O C A L
S H I F T S T A R T T I M E T Y P E V E R I F Y V E R V O L = , ; + / [ ] " : . \
P A T H E X T P A T H P R O M P T
F O R / ? I F / ? R E M / ?
% s % s
% s
/ A / P : E O F
f d p n x s a t z D O
/ L / D / F / R I N E L S E ( % s ) % s % s % s % s
% c % c % s % s & ( ) [ ] { } ^ = ; ! % ' + , ` ~
答案 3 :(得分:5)
无法更改pause
命令的文本。但是,您可能希望查看choice
命令。您可以更改其打印的文本。唯一的缺点是你需要提供一个可接受的字符列表。
答案 4 :(得分:2)
这是另一个技巧
Pause. >nul | echo. Press something to continue
答案 5 :(得分:1)
另一个脏解决方案就是这样的,
SET /P =Press enter to return to the menu . . .
GOTO :menu
这样做的好处是光标与消息保持在同一行,就像使用PAUSE
命令一样。
缺点是它只会侦听回车键。
答案 6 :(得分:1)
从Windows 2000(不是XP)开始,您可以使用choice
命令,该命令远比pause
或set /p
强大。
除了可以指定自己的提示文本外,您还可以要求用户键入一个特定的键,并且仅键入该键,而不是仅限于并要求按下[Enter]
。>
此外,您还可以提示用户按下多个不同的键,并根据所按下的键采取行动。
键入choice /?
以获得帮助,或在此处阅读有关的更多信息:Wikipedia: choice (command)
答案 7 :(得分:1)
已经有很多解决方案。另一种有意义的变体:
echo Hit any key to continue...&pause>nul
答案 8 :(得分:0)
你可以这样做!
@echo off
echo Hello World!
echo:
echo Press 1 to continue
set /p letter=
if %letter% == 1 goto a ;or instead of goto you could write start and the file or website you want to start
pause >nul
:a
cls
echo BYE NOW!
pause >nul