我已经制作了一个批处理脚本模板,可以通过编程来选择给定的目标,但我希望脚本能够还扔一个风俗如果目标尚未出现在最终用户的机器上,则会出现错误对话框。
这是我当前的脚本:
set targetfilepath=%TARGETPATH%
%SYSTEMROOT%\explorer.exe /select, "%TARGETFILEPATH%"
我可以将其合并到我的脚本中吗?如果可以,我应该将其放在哪里?:
IF NOT EXIST goto net send localhost "%MESSAGETXT%"
答案1
我还想使用更简洁的对话框来显示错误消息。我可以将这种方法合并到批处理脚本中吗?
是的,你可以运行信息框使用批处理脚本脚本如下面我提供的示例所示。由于您还表示想要“使用更简洁的对话框来显示错误消息“我用第一行来设置一个变量,开始再次使用批处理脚本,但可以/MIN
选择不让批处理窗口太显眼。如果不想使用它,只需删除顶行即可。
批处理脚本
确保根据您的需要设置变量SET TARGETPATH=
、SET msgboxTitle=
和的值。SET msgboxBody=
IF NOT DEFINED MINIMIZED SET MINIMIZED=1 && START "" /MIN "%~dpnx0" %* && EXIT
SET TARGETPATH=C:\Users\User\Desktop\Test
IF NOT EXIST "%TARGETPATH%" GOTO :ERROR
%SYSTEMROOT%\EXPLORER /SELECT, "%TARGETPATH%"
GOTO :END
:ERROR
SET msgboxTitle=This is my Message Title
SET msgboxBody=This is my Message Body
SET tmpmsgbox=%temp%\~tmpmsgbox.vbs
IF EXIST "%tmpmsgbox%" DEL /F /Q "%tmpmsgbox%"
ECHO msgbox "%msgboxBody%",0,"%msgboxTitle%">"%tmpmsgbox%"
WSCRIPT "%tmpmsgbox%"
:END
更多资源
答案2
设置 MESSAGETXT="您的文本在此处" 设置 TARGETPATH="你的路径在这里" 如果不存在“%TARGETPATH%”则转到错误 %SYSTEMROOT%\ explorer.exe /选择,“%TARGETFILEPATH%” 转到结束 :错误 msg“用户名”“%MESSAGETXT%” :结尾
您几乎已经掌握了。谈到批处理编程时,SS64 是您的好帮手。此外,它还具有一般命令行用法:这是他们的网站。 我和他们没有任何关系。
编辑:哇,是的,我在那里做了一些错误的假设,只是添加了代码而没有测试/查看它。 Windows 7 不再有,net send
而是使用msg
。 我已经更新了我的答案,它在我的系统上运行良好。 如果您希望命令行保持可见,直到您按下某个键将其删除,您可以PAUSE
在末尾添加一个命令。
答案3
不幸的是,@Blerg对我来说没用。我冒险尝试堆栈溢出并发现此主题并将其与 @Blerg 的脚本一起使用。现在,使用我编写的这个脚本,该脚本能够抛出错误消息:
IF NOT EXIST "%TARGETPATH%" GOTO ERROR
%SYSTEMROOT%\explorer.exe /select, "%TARGETPATH%"
GOTO END
:ERROR
START CMD /C "ECHO The target could not be located because it does not exist! && PAUSE"
:END
(我所要做的就是替换第五行。)
尽管这可行,但我还想使用更简洁的对话框来显示错误消息,就像这个 VBS 脚本可以做到的那样:
x=msgbox("%WINDOWTEXT%" ,0, "%WINDOWTITLE%")
我可以将这种方法合并到批处理脚本中吗?或者我应该将批处理脚本转换成 Visual Basic 脚本?
答案4
要打印 Windows 系统错误消息使用(在命令行中):
net helpmsg %ERRORLEVEL%