@echo off
mode con cols=75 lines=30/ >nul 2>nul
echo.
echo.
rem 确认权限
%windir%\system32\reg.exe query "HKU" /e /k /f S-1-5-19 >nul 2>nul || goto Officebushust
%windir%\system32\reg.exe query "HKU\S-1-5-19" >nul 2>nul || Echo 请右键“以管理员身份运行”&&Pause >nul&&Exit

:Officebushust
title Office部署
cls
set officeml=%~dp0
if exist "%officeml%setup.exe" if exist "%officeml%configuration.xml" goto Officebushu
echo.
echo                                  使用说明
echo============================================================================
echo    先下载 Office部署工具，运行后释放
echo.
echo    把本bat复制到释放后的文件那里，即与setup.exe、Configuration.xml在同一目录
echo.
echo    请勿修改setup.exe、Configuration.xml的名
echo.
echo.
echo    目前，没发现setup.exe、Configuration.xml文件，按任意键去微软官网下载
echo.
pause >nul
start http://www.microsoft.com/en-us/download/details.aspx?id=49117
exit

:Officebushu
title Office部署
cls
echo.
echo                                 Office部署
echo============================================================================
echo    1. 下载Office365安装源(即离线安装包)到本地
echo.
echo    2. 安装 或 添加\删除组件
echo.
echo    3. 删除Office
echo.
echo    4. 查阅微软建议64位系统安装32位office的原因及区别
echo.
echo    5. Office冗余文件清理
echo.
echo    Q. 返回主菜单
echo.
echo============================================================================
echo.
set choose=~
set /p choose=请选择:
if %choose%==1 goto Officebushu1
if %choose%==2 goto Officebushu2
if %choose%==3 goto Officebushu3
if %choose%==4 goto Officebushu4
if %choose%==5 goto Office_Cleaner
if /I %choose%==Q goto software_tools
echo.
echo  无效选择,按任意键后,重新输入！
pause >nul
goto Officebushu

:Officebushu1
cls
title 下载Office365安装源到本地
echo.
echo                         下载Office365安装源到本地
echo============================================================================
if exist "%officeml%download.xml" echo %officeml%下已存在download.xml文件，请查阅并删除后,按任意键重新开始&&Pause >nul&&goto Officebushu1
rd "%officeml%Office" 2>nul
rd %windir%\System32\Office 2>nul
rd %windir%\SysWOW64\Office 2>nul
if exist "%officeml%Office" echo %officeml%下已存在Office文件夹，请查阅后移动或删除该文件夹，按任意键重新开始&&Pause >nul&&goto Officebushu1
if exist %windir%\System32\Office echo %windir%\System32下已存在Office文件夹，请查阅后移动或删除该文件夹，按任意键重新开始&&Pause >nul&&goto Officebushu1
if exist %windir%\SysWOW64\Office echo %windir%\SysWOW64下已存在Office文件夹，请查阅后移动或删除该文件夹，按任意键重新开始&&Pause >nul&&goto Officebushu1
echo.
echo  提示：即使是64位系统，微软仍建议使用32位office程序
echo.
set /p Officebl1=请输入要下载的程序位数(如：64)，直接回车则下载32位：
echo.
if not defined Officebl1 set Officebl1=32
echo.
echo    1. 家庭版    2.教育版
echo.
set /p Officebl2=请选择要下载的版本：
echo.
if %Officebl2%==1 set Officebl3=O365HomePremRetail
if %Officebl2%==2 set Officebl3=O365ProPlusRetail
(
echo ^<Configuration^> 
echo   ^<Add OfficeClientEdition="%Officebl1%"^> 
echo    ^<Product ID="%Officebl3%" ^> 
echo      ^<Language ID="zh-cn" /^>      
echo    ^</Product^> 
echo   ^</Add^> 
echo ^</Configuration^>
)>>"%officeml%download.xml"
echo.
echo.
echo  正在下载，请不要关闭本窗口，完成后会有提示
echo.
echo  如果显示不能安装，即为下载失败
echo.
"%officeml%setup.exe" /download "%officeml%download.xml"
del /f /q "%officeml%download.xml"
echo.
if exist %windir%\System32\Office xcopy %windir%\System32\Office "%officeml%" /s
if exist %windir%\SysWOW64\Office xcopy %windir%\SysWOW64\Office "%officeml%" /s
echo.
echo  操作完成，如果成功，本工具所在目录会生成Office文件。按任意键返回
pause >nul
goto Officebushu

:Officebushu2
cls
title 安装 或 添加\删除组件
echo.
echo                          安装 或 添加\删除组件
echo============================================================================
if exist "%officeml%setup.xml" echo %officeml%下已存在setup.xml文件，请查阅并删除后,按任意键重新开始&&Pause >nul&&goto Officebushu2
echo.
echo  本地须有安装源。如果是office365，请使用功能1；如果是零售版(ISO格式)，请解压
echo.
echo  最好把安装源与本工具放置于同一目录下
echo.
set /p Officebl1=请选择要操作的office程序位数(如：64)，微软建议使用32位程序，直接回车则安装32位：
if not defined Officebl1 set Officebl1=32
echo.
echo    1. office365家庭版    2.office365教育版    3.office零售版(ISO)
echo.
set /p Officebl2=请选择要操作的版本：
echo.
if %Officebl2%==1 set Officebl3=O365HomePremRetail
if %Officebl2%==2 set Officebl3=O365ProPlusRetail
if %Officebl2%==3 set Officebl3=ProPlusRetail
echo.
(
echo ^<Configuration^> 
echo   ^<Add OfficeClientEdition="%Officebl1%"^> 
echo    ^<Product ID="%Officebl3%" ^> 
echo      ^<Language ID="zh-cn" /^>      
)>>"%officeml%setup.xml"
set /p Officezj1=输入 Y 安装OneNote，直接回车则不安装：
if not defined Officezj1 echo      ^<ExcludeApp ID="OneNote" /^>>>"%officeml%setup.xml"
echo.
set /p Officezj2=输入 Y 安装Access，直接回车则不安装：
if not defined Officezj2 echo      ^<ExcludeApp ID="Access" /^>>>"%officeml%setup.xml"
echo.
set /p Officezj3=输入 Y 安装Publisher，直接回车则不安装：
if not defined Officezj3 echo      ^<ExcludeApp ID="Publisher" /^>>>"%officeml%setup.xml"
echo.
set /p Officezj4=输入 Y 安装Outlook，直接回车则不安装：
if not defined Officezj4 echo      ^<ExcludeApp ID="Outlook" /^>>>"%officeml%setup.xml"
echo.
if %Officebl2% NEQ 1 goto Officebushu2-2

:Officebushu2-1
(
echo    ^</Product^> 
echo   ^</Add^> 
echo ^</Configuration^>
)>>"%officeml%setup.xml"
echo.
echo.
echo  正在安装，请不要关闭本窗口，完成后会有提示
echo.
"%officeml%setup.exe" /configure "%officeml%setup.xml"
del /f /q "%officeml%setup.xml"
echo.
echo.
echo  操作完成，按任意键返回
pause >nul
goto Officebushu

:Officebushu2-2
set /p Officezj5=输入 Y 安装Skype，直接回车则不安装：
if not defined Officezj5 echo      ^<ExcludeApp ID="Lync" /^>>>"%officeml%setup.xml"
echo.
set /p Officezj6=输入 Y 安装OneDrive，直接回车则不安装：
if not defined Officezj6 echo      ^<ExcludeApp ID="Groove" /^>>>"%officeml%setup.xml"
echo.
set /p Officezj7=输入 Y 安装InfoPath，直接回车则不安装：
if not defined Officezj7 echo      ^<ExcludeApp ID="InfoPath" /^>>>"%officeml%setup.xml"
echo.
if %Officebl2% EQU 3 goto Officebushu2-3
goto Officebushu2-1

:Officebushu2-3
set /p Officezj8=输入 Y 安装Project，直接回车则不安装：
if not defined Officezj8 echo      ^<ExcludeApp ID="Project" /^>>>"%officeml%setup.xml"
echo.
set /p Officezj9=输入 Y 安装SharePointDesigner，直接回车则不安装：
if not defined Officezj9 echo      ^<ExcludeApp ID="SharePointDesigner" /^>>>"%officeml%setup.xml"
echo.
set /p Officezj10=输入 Y 安装Visio，直接回车则不安装：
if not defined Officezj10 echo      ^<ExcludeApp ID="Visio" /^>>>"%officeml%setup.xml"
echo.
goto Officebushu2-1

:Officebushu3
cls
title 删除Office
echo.
echo                                 删除Office
echo============================================================================
if exist "%officeml%Remove.xml" echo %officeml%下已存在Remove.xml文件，请查阅并删除后,按任意键重新开始&&Pause >nul&&goto Officebushu3
rd "%officeml%download" 2>nul
echo.
echo    1. office365家庭版    2.office365教育版    3.office零售版(ISO)
echo.
set /p Officebl2=请选择要操作的版本：
echo.
if %Officebl4%==1 set Officebl3=O365HomePremRetail
if %Officebl4%==2 set Officebl3=O365ProPlusRetail
if %Officebl4%==3 set Officebl3=ProPlusRetail
(
echo ^<Configuration^>
echo ^<Remove^>
echo     ^<Product ID="%Officebl3%" /^>
echo ^</Configuration^>
)>>"%officeml%Remove.xml"
echo.
echo.
echo  正在删除，请不要关闭本窗口，完成后会有提示
echo.
"%officeml%setup.exe" /configure "%officeml%Remove.xml"
del /f /q "%officeml%Remove.xml"
echo.
echo.
echo  操作完成，按任意键返回
pause >nul
goto Officebushu

:Officebushu4
start https://technet.microsoft.com/zh-CN/library/ee681792.aspx
goto Officebushu

:Office_Cleaner
title Office冗余文件清理
cls
echo.
echo.
echo.
echo.
if not exist "C:\ProgramData\Microsoft\ClickToRun" echo 没有发现ClickToRun文件，可能不是默认路径安装，按任意键退出&&Pause >nul&&exit
echo.
taskkill /f /im OfficeClickToRun.exe
for /f "tokens=*" %%i in ('dir /b /ad-h "C:\ProgramData\Microsoft\ClickToRun"^|find /v /i "MachineData"^|find /v /i "UserData"^|find /v /i "DeploymentConfig"') do rd "C:\ProgramData\Microsoft\ClickToRun\%%i" /s /q
for /f "tokens=*" %%i in ('dir /b /a-d-h "C:\ProgramData\Microsoft\ClickToRun"^|find /v "DeploymentConfig"') do del "C:\ProgramData\Microsoft\ClickToRun\%%i" /s /q
cls
echo.
echo.
echo.
echo.
echo  操作完成,按任意键返回
pause >nul
goto Officebushust