求助:创建可接收输入并执行指定批处理命令的Batch脚本
修复你的JBoss批处理脚本问题
嘿,我看你这个批处理脚本的问题主要出在几个细节上,我帮你梳理下并修复好!
现有代码的核心问题
@echo后面直接跟命令是错误的,应该用@echo off关闭命令回显,否则会把你的set命令原封不动显示出来- 切换目录后直接打开新
cmd.exe会导致之前输入的变量无法传递到新窗口,而且完全没必要新开窗口执行命令 jboss-cli.bat的命令参数没写完,没有正确引用你输入的两个变量
修复后的完整脚本
@echo off setlocal enabledelayedexpansion :: 接收用户输入的资源系统名称 set /p "fileIn=Name of resource system: " :: 接收用户输入的操作类型(add/remove) set /p "actionIn=(add) or (remove): " :: 切换到JBoss的bin目录,/d参数确保跨驱动器也能切换成功 cd /d "C:\jboss-eap-7.1.0\jboss-eap-7.1\bin" :: 执行JBoss CLI命令,这里假设你的CLI脚本命名规则是[操作]-[资源].cli,比如add-mysql.cli jboss-cli.bat --connect --file=!actionIn!-!fileIn!.cli :: 执行完后暂停窗口,方便查看执行结果 pause
关键细节解释
@echo off:关闭命令行的命令回显,让输出更整洁,只显示脚本的交互提示和命令执行结果setlocal enabledelayedexpansion:启用延迟变量扩展,确保用户输入的变量能在后续命令中被正确引用(尤其是如果后续需要在代码块里使用变量时,这个设置必不可少)set /p "变量=提示文本":规范的输入写法,把提示文本放在引号里,避免遇到特殊字符时出错cd /d:加上/d参数,即使目标目录在其他磁盘驱动器,也能顺利切换过去(你的JBoss在C盘,这个参数可选,但加上让脚本更通用)jboss-cli.bat命令:用!变量!(延迟扩展的变量引用方式)把用户输入的操作和资源名称拼接成CLI脚本文件名,你可以根据实际的脚本路径和命名规则调整这个部分pause:执行完命令后让窗口停留,避免执行完直接关闭,方便你查看命令的执行状态和结果
内容的提问来源于stack exchange,提问作者Bryan
相关产品推荐
相关产品推荐

