core: 修复 windows 下参数有问号时无法正确传递

This commit is contained in:
bin456789 2025-02-15 00:25:37 +08:00
parent e57a15118b
commit 3d11c791a7
No known key found for this signature in database
GPG Key ID: EE301B386DE6C11B
2 changed files with 12 additions and 8 deletions

View File

@ -142,18 +142,21 @@ if not exist reinstall.sh (
call :chmod a+x %thisdir%reinstall.sh
)
rem %* 无法处理 --iso https://x.com/?yyy=123
rem 为每个参数添加引号,使参数正确传递到 bash
for %%a in (%*) do (
set "param=!param! "%%~a""
)
rem for %%a in (%*) do (
rem set "param=!param! "%%~a""
rem )
rem 方法1
rem 转成 unix 格式,避免用户用 windows 记事本编辑后换行符不对
%SystemDrive%\cygwin\bin\dos2unix -q '%thisdir%reinstall.sh'
%SystemDrive%\cygwin\bin\bash -l -c '%thisdir%reinstall.sh !param!'
rem 方法2
rem %SystemDrive%\cygwin\bin\bash reinstall.sh %*
rem 再在 reinstall.sh 里运行 source /etc/profile
rem 用 bash 运行
rem %SystemDrive%\cygwin\bin\bash -l %thisdir%reinstall.sh %* 运行后会清屏
rem 因此不能用 -l
rem 这就需要在 reinstall.sh 里运行 source /etc/profile
rem 或者添加 export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$PATH
%SystemDrive%\cygwin\bin\bash %thisdir%reinstall.sh %*
exit /b

View File

@ -21,6 +21,7 @@ WINDOWS_EXES='cmd powershell wmic reg diskpart netsh bcdedit mountvol'
export LC_ALL=C
# 处理部分用户用 su 切换成 root 导致环境变量没 sbin 目录
# 也能处理 cygwin bash 没有添加 -l 运行 reinstall.sh
# 不要漏了最后的 $PATH否则会找不到 windows 系统程序例如 diskpart
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$PATH