bat脚本读取iis中文目录为空

文章讲述了在处理BAT脚本时遇到的IIS中文目录问题,通过删除特定代码解决编码问题,并详细描述了脚本执行过程,包括设置UTF-8编码、读取端口、创建配置文件、部署网站及检查PowerShell版本等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值