bat脚本中发现读取iis中文目录为空,发现是多加了 部分代码 去掉即可
去掉
REM 设置 CMD 控制台为 UTF-8 编码
chcp 65001 > nul 2>&1
这两行即可
@echo off
if exist "%SystemRoot%\SysWOW64" path %path%;%windir%\SysNative;%SystemRoot%\SysWOW64;%~dp0
bcdedit >nul
if '%errorlevel%' NEQ '0' (goto UACPrompt) else (goto UACAdmin)
:UACPrompt
%1 start "" mshta vbscript:createobject("shell.application").shellexecute("""%~0""","::",,"runas",1)(window.close)&exit
exit /B
:UACAdmin
cd /d "%~dp0"
REM 开启延迟环境变量
setlocal enabledelayedexpansion
REM 设置 CMD 控制台为 UTF-8 编码
@chcp 65001 > nul 2>&1
REM 获取当前脚本所在位置
set "LOG_FILE="%~dp0front-end\InstallLog.log""
echo %LOG_FILE%
REM 清空或创建新的日志文件
if exist %LOG_FILE% (
echo. > %LOG_FILE%
) else (
echo Creating log file: %LOG_FILE%
)
echo [%DATE% %TIME%] Starting script execution...
REM 读取端口号
set "PORT_TXT_DIR="%~dp0falcon-backend-port.txt""
echo !PORT_TXT_DIR!
for /F "usebackq delims=" %%a in (!PORT_TXT_DIR!) do (
set "BACK_PORT=%%a"
)
echo [%DATE% %TIME%] BACK_PORT: !BACK_PORT!... >> %LOG_FILE%
REM 创建配置文件并把文件放入前端项目目录
set "createBackEndConfig="%~dp0front-end\createBackEndConfig.ps1""
echo !createBackEndConfig!
powershell.exe -ExecutionPolicy Bypass -File !createBackEndConfig! %BACK_PORT%
REM 生成并检查可用端口号
set PORT_MIN=1025
set PORT_MAX=65535
:generate_and_check_port
set /a FRONT_PORT=!RANDOM! %% (!PORT_MAX! - !PORT_MIN!) + !PORT_MIN!
set "portcheckerPath="%~dp0front-end\portchecker.bat""
echo portcheckerPath=%portcheckerPath%...
call %portcheckerPath% !FRONT_PORT!
echo ERRORLEVEL= %ERRORLEVEL%
if %ERRORLEVEL% equ 0 goto port_available
echo [%DATE% %TIME%] Port %FRONT_PORT% is already in use, retrying... >> %LOG_FILE%
goto generate_and_check_port
:port_available
echo [%DATE% %TIME%] Port %FRONT_PORT% is available... >> %LOG_FILE%
REM 部署网站相关操作
set APP_POOL_NAME=FalconPool
set "PHYSICAL_PATH="%~dp0front-end\zb-datav""
echo [%DATE% %TIME%] Configuring website deployment (APP_POOL_NAME: %APP_POOL_NAME%, PHYSICAL_PATH: %PHYSICAL_PATH%)... >> %LOG_FILE%
REM 检查和处理已存在的站点和应用程序池
SET SiteExists="NO"
FOR /F "tokens=*" %%A IN ('%systemroot%\System32\inetsrv\appcmd list site') DO (
SET SiteExists="YES"
)
IF %SiteExists% EQU "YES" (
echo [%DATE% %TIME%] SiteExists%SiteExists% ...
GOTO :install_iis_yes
) ELSE (
echo [%DATE% %TIME%] SiteExists%SiteExists% ...
GOTO :install_iis_no
)
:install_iis_yes
REM 检查已有站点与物理路径及应用池是否匹配,如果不匹配则部署新站点
FOR /f "tokens=*" %%A IN ('%systemroot%\System32\inetsrv\appcmd list vdir') DO (
SET "VDIR_INFO=%%A"
echo [%DATE% %TIME%] VDIR_INFO !VDIR_INFO!... >> %LOG_FILE%
REM 分割虚拟目录信息以获取物理路径
FOR /F "tokens=2,3,4* delims=:/ " %%B IN ("!VDIR_INFO!") DO (
echo [%DATE% %TIME%] SPLIT PATH %%A----- %%B----%%C----%%D----%%E-----%%F----%%G... >> %LOG_FILE%
SET CurrentPhysicalPath=%%E
REM 去除可能存在的多余字符,比如)和空格
set "RealPhysicalPath="!CurrentPhysicalPath:~0,-1!""
echo [%DATE% %TIME%] CurrentPhysicalPath !RealPhysicalPath! ... >> %LOG_FILE%
echo [%DATE% %TIME%] PHYSICAL_PATH !PHYSICAL_PATH! ... >> %LOG_FILE%
IF !RealPhysicalPath! EQU !PHYSICAL_PATH! (
GOTO :end_deploy_website
)
)
)
:check_wms
:: 使用PowerShell获取当前版本号
for /f "tokens=1,2 delims=. " %%a in ('powershell -command "$PSVersionTable.PSVersion.Major"') do (
set PowerShellMajorVersion=%%a
)
:: 检查PowerShell版本是否低于3.0
if %PowerShellMajorVersion% LSS 3 (
echo PowerShell version is less than 3.0. Installing WMF 3.0... %PROCESSOR_ARCHITECTURE%...>> %LOG_FILE%
:: 判断操作系统架构
if "%PROCESSOR_ARCHITECTURE%"=="AMD64" (
echo 操作系统64位
echo 安装64位WMF 3.0...
wusa "%~dp0front-end\Windows6.1-KB2506143-x64.msu" /quiet /norestart
) else (
echo 操作系统32位?
echo 安装32位WMF 3.0...
wusa "%~dp0front-end\Windows6.0-KB2506143-x86.msu" /quiet /norestart
)
:: 检查WMF安装结果
if %ERRORLEVEL% equ 0 (
echo WMF 3.0安装成功...>> %LOG_FILE%
goto :set_proxy_config
) else (
echo WMF 3.0安装失败,请检查错误信息...>> %LOG_FILE%
exit /b 1
)
) else (
echo PowerShell version is at least 3.0...>> %LOG_FILE%
goto :set_proxy_config
)
:end_deploy_website
pause
endlocal