哈喽 我又来了
客户昨天提出了一个要求,这次的update里要用bat脚本去拷贝远程共享目录下的文件到各自的本地C盘目录下,于是乎,从昨天下午开始研究
到了今天中午,写写删删,乱改一气,总算弄出来了一个又有局限性又简易的小脚本。ps:时间太短,牛马也懵逼啊~ >.<!!
废话不多说,上正文
@echo off
::By 一袭白衣一
:: TIME:2025/1
::version:1.0
:: 检查配置文件是否存在
if exist 配置.txt (
set /p Remote_dir=<配置.txt
echo 从配置文件读取远程下载目录信息
) else (
echo 未读取到配置文件,请按回车进入默认更新方案:
:choose
set /p choice=
if /i "%choice%"=="1" (
set Remote_dir=\\远程目录1
) else if /i "%choice%"=="2" (
set Remote_dir=\\远程目录2
echo 请根据实际需要输入1或2选择默认远程共享路径:
echo 1.北京地区(BJ)
echo 2.上海地区(SH)
goto choose
)
)
echo 读取到的远程下载目录信息: %Remote_dir%
:write
echo 当前登录的用户为:%USERNAME%
set /p DIR_NAME="请确认上述用户名正确后回车即可:"
:: 检查C盘users下是否有客户用户的个人目录
set "TARGET_DIR=C:\Users\%USERNAME%"
if not exist "%TARGET_DIR%" (
echo 未找到目录: %TARGET_DIR%
goto write
)
:: 进入目标目录,检查是否存在目标目录
set "US_DIR=%TARGET_DIR%\XXX"
if not exist "%US_DIR%" (
echo 未检查到XXX目录,创建中...
mkdir "%US_DIR%"
echo %US_DIR%目录创建成功。
)
:: 进入US_DIR目录,检查是否已经存在的目录
set "目标_DIR="
for /d %%i in ("%US_DIR%\目录名称*") do (
if not defined 目标_DIR (
set "目标_DIR=%%i"
echo 找到目标目录: %%i
)
)
:: 如果存在目标目录名称开头的目录,则删除旧版本目录
if defined 目标_DIR (
rmdir /s /q "%目标_DIR%"
echo 删除旧版本成功。
)
:: 从远程机器的共享目录拷贝整个文件夹到US目录下
echo 开始下载新版本到本地,请稍等!
xcopy /e /i /y "%Remote_dir%" "%US_DIR%\目标目录"
if errorlevel 1 (
echo 远程目录无法访问,请推出后重新运行并选择其他选项重新拷贝,如仍失败,请联系管理员!
goto end
)else (
echo 新版本下载完成!
)
:end
pause
这个脚本由于时间原因,写的比较仓促,可以看到有很多地方都不严谨
比如:在查出来当前登录机器的用户后,不管用户有任何键盘操作,都会进行下一步!!
这个我实在是没时间再去加判断加逻辑了,不然这个地方可以加上判断,让客户确认后输入Y或者N,然后再让客户输入正确的用户名,脚本再去创建目录
巴拉巴拉的,还有很多地方要改,不过由于时间原因,这个脚本就先这么用吧,反正如果客户听话,按提示一步一步来,倒也没问题。毕竟前提条件都ok。
后边有空给再更新吧,这玩意就离谱!欢迎指导!!