我一直在寻找一种从 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 $?