![在 cygwin CLI 上运行没有 .bat 扩展名的 .bat 文件](https://linux22.com/image/1343528/%E5%9C%A8%20cygwin%20CLI%20%E4%B8%8A%E8%BF%90%E8%A1%8C%E6%B2%A1%E6%9C%89%20.bat%20%E6%89%A9%E5%B1%95%E5%90%8D%E7%9A%84%20.bat%20%E6%96%87%E4%BB%B6.png)
我一直在寻找一种从 cygwin 命令行运行 dos 批处理文件的方法,而无需输入扩展名。
那可能吗?
目前,我必须输入扩展名,否则 cygwin 找不到批处理文件。
答案1
我找不到其他解决方案,所以我按照 golimar 所说的做了。这是一个简单的脚本,它在特定目录中
查找文件并创建别名。 例如,如果有一个文件,就会有一个指向它的别名。 将其添加到您的或您正在使用的任何内容中:.bat
git.bat
/some/path
git
~/.bashrc
~/.zshrc
for f in /some/path/*.bat; do alias `basename "${f%.bat}"`=$f; done
答案2
另一个解决方法是使用 bash 内部函数,command_not_found_handle()
如下所示:
command_not_found_handle() {
echo "bash: $1: command_not_found_handle()" >&2
LOWERCASE_CMD=$(echo "$1" | tr '[A-Z]' '[a-z]')
shift
[ -f /cygdrive/c/CLIPrograms/${LOWERCASE_CMD}.bat ] && /cygdrive/c/CLIPrograms/${LOWERCASE_CMD}.bat "$@"
return $?