-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtool.bat
More file actions
77 lines (64 loc) · 1.65 KB
/
tool.bat
File metadata and controls
77 lines (64 loc) · 1.65 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
@echo off
setlocal enabledelayedexpansion
:: --------------------------------------------------------------------
:: 命令分发器 (v3.1)
:: 请确保此脚本文件 (run.cmd/tool.bat) 的编码为 ANSI (GBK)
:: --------------------------------------------------------------------
:: 必须在执行 shift 之前,立刻把当前脚本的真实路径保存下来!
set "SCRIPTS_DIR=%~dp0"
:: 检查是否提供了命令
if "%~1"=="" (
echo Usage: tool [command] [arguments...]
echo.
echo Example: tool tree . -e .git
goto :eof
)
:: 保存命令名
set "COMMAND_NAME=%~1"
:: 提取剩余的参数
set "ARGS="
shift
:parse_args
if "%~1" neq "" (
set "ARGS=!ARGS! %1"
shift
goto :parse_args
)
:: 准备变量
set "SCRIPT_FOUND="
set "SCRIPT_EXT="
:: 递归搜索匹配的脚本
for /r "%SCRIPTS_DIR%" %%F in (*.py, *.bat, *.cmd, *.ps1) do (
if /i "%%~nF"=="%COMMAND_NAME%" (
set "SCRIPT_FOUND=%%F"
set "SCRIPT_EXT=%%~xF"
goto :FindScriptDone
)
)
:FindScriptDone
:: 检查是否找到目标
if not defined SCRIPT_FOUND (
echo Error: Command '%COMMAND_NAME%' not found in "%SCRIPTS_DIR%" or its subdirectories.
goto :eof
)
:: 执行分发逻辑
if /i "!SCRIPT_EXT!"==".py" (
set PYTHONUTF8=1
python "!SCRIPT_FOUND!" !ARGS!
goto :eof
)
if /i "!SCRIPT_EXT!"==".bat" (
call "!SCRIPT_FOUND!" !ARGS!
goto :eof
)
if /i "!SCRIPT_EXT!"==".cmd" (
call "!SCRIPT_FOUND!" !ARGS!
goto :eof
)
if /i "!SCRIPT_EXT!"==".ps1" (
powershell.exe -ExecutionPolicy Bypass -File "!SCRIPT_FOUND!" !ARGS!
goto :eof
)
echo Error: Unknown script type "!SCRIPT_EXT!" for "!SCRIPT_FOUND!".
endlocal
:eof