@echo off&@title FTP便携上传助手 By Lonelyer ^<hackkey@qq.com^>
pushd "%~dp0..\"
set "OLDPATH=C:\Program Files (x86)\SepanderSoft;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\NVIDIA Corporation\NVIDIA NvDLISR;C:\Program Files\Microsoft SQL Server\130\Tools\Binn\;C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn\;C:\Program Files (x86)\Microsoft VS Code\bin;C:\Program Files\dotnet\;H:\Go\bin;C:\Users\Administrator\AppData\Local\Microsoft\WindowsApps;C:\Users\Administrator\AppData\Local\Programs\Microsoft VS Code\bin"
set "PATH=%~dp0..\deps;%PATH%"
set "HOMEPATH=%~dp0..\"
set HOMEPATH=%HOMEPATH:~0,-1%
REM 兼容汉字文件名:使用了Mintty下面这行就可以不用,否则和.minttyrc冲突,起反作用
REM set LANG="zh_CN.GBK"

if "%1"=="" (echo\
echo 欢迎 %Username%!
echo FTP便携上传助手 By Lonelyer ^<hackkey@qq.com^>
echo\
echo ==============================
echo 使用说明:
echo 请把要上传的HTML文件直接拖拽到本文件上,即可进行上传...
echo\
echo 注意:1.文件完整路径(文件名和文件夹名称)中不要包含空格,否则会导致解析失败;
echo       2.文件名或文件夹名称可以包含中文汉字,不影响使用;
echo ==============================
echo\
ping -n 3 127.0.0.1>nul&color 0A
echo 本次不执行任何操作,按任意键退出本程序或直接关闭本窗口....
pause>nul&&exit
) 

REM 拉取最新密码
set "password="
set "passwordFile=rcfile/password.txt"
wget -O %passwordFile% http://source.xxx.com/nat/password.txt -o rcfile/wget.log

for /f %%n in (%passwordFile%) do (
   set "password=%%n"
)

REM echo =======================
REM echo %*
REM echo =======================
REM echo %*|sed -r "s#[\"]##g;s#[ ]#\\ #g;s#^\\##;s#\\$##"
REM >%~dp0fixfullpath.txt echo %*|sed -r "s#[\"]##g;s#[ ]#\\\ #g;s#^\\##;s#\\$##"
REM set "FixFullPath="
REM for /F "usebackq delims= tokens=*" %%t in (`type %~dp0fixfullpath.txt`) do (
REM set "FixFullPath=%%t"
REM )
REM echo FixFullPath %FixFullPath%
REM echo =======================

set "localFile="
set "FileName="
set "FilePath="
set "localFileExt="
set "FileDrive="
set "FileUnixSuffix="
for %%i in ("%*") do (
set localFile=%%~fi
set FileName=%%~nxi
set FilePath=%%~dpi
set localFileExt=%%~xi
set FileDrive=%%~di
set "FileUnixSuffix=%%~pnxi"
)

set FileDrive=%FileDrive::=%
set "FileUnixSuffix=%FileUnixSuffix:\=/%"
set "FullUnixPath=/cygdrive/%FileDrive%%FileUnixSuffix%"
REM 如果有空格,进行替换,测试无效
REM set "FullUnixPath=%FullUnixPath: =\ %"

REM echo %localFile%
REM echo %FileName%
REM echo %localFileExt%
REM echo %FileDrive%
REM echo 组合后路径:%FullUnixPath%

REM Push 到上传文件所在目录
REM pushd "%FilePath%"

if "%localFileExt%"==".htm" ( call :PutHTMLFile "%localFile%" html&goto endScript )
if "%localFileExt%"==".html" ( call :PutHTMLFile "%localFile%" html&goto endScript )
echo\
echo        你要上传的文件 %FileName% 不是HTML文件,是否确认上传本文件?
echo        输入 y 确认强制上传,或者直接关闭本窗口退出
echo\
set /p forcePut=

if "%forcePut%"=="y" ( call :PutHTMLFile "%localFile%"&goto endScript )
if "%forcePut%"=="Y" ( call :PutHTMLFile "%localFile%"&goto endScript )
exit


:PutHTMLFile
set PutFile=%1
@title 正在执行上传指令,请等待....
REM lftp -d -e "ls -al;!!dir;exit;" --rcfile ./rcfile/.lftprc -u ftp_web,12345678 ftp.xxx.com

echo\
echo    工作路径 %CD%
echo =^> 上传文件 %PutFile%
echo 上传过程中不要关闭窗口
echo\

REM set PutFile=%PutFile:\=\\%
REM echo %PutFile%

if "x%2"=="xhtml" (
sed -i "s#.5pt#1pt#g" %PutFile%
lftp -e "put "'"%FullUnixPath%"'" -o index.html;ls -al;exit;" --rcfile ./rcfile/.lftprc -u ftp_web,%password% ftp.xxx.com
) else (
lftp -e "put "'"%FullUnixPath%"'";ls -al;exit;" --rcfile ./rcfile/.lftprc -u ftp_web,%password% ftp.xxx.com
)
goto :eof


:endScript
echo\&echo 操作命令执行完毕....
REM echo  返回码:%ERRORLEVEL%
if "%ERRORLEVEL%"=="0" (
@title 上传成功!&color 0A
echo\
echo  目标文件("%FileName%")上传成功!
echo  你现在可以关闭本窗口或按任意键退出...
) else (
@title 操作失败,请截图本页面联系技术管理员反馈哦!&color 0C
echo\
echo   哦豁,操作失败
echo   本次任务失败,可能是由于用户名或密码不正确,或者服务器下线所致。
echo   请截图本页面联系管理员进行反馈!
echo   你现在可以关闭本窗口或按任意键退出...
)
pause>nul&&exit
goto :eof

pause

扫描二维码,在手机上阅读!