BAT&PowerShell实现本地文件自动上传FTP服务器

运维工作中,经常需要一些脚本来实现自动化,今天分享本地文件自动上传FTP的两种解决办法:

一、使用BAT自动上传FTP

使用批处理(BAT)命令文件将本地文件夹内容上传到FTP服务器需要使用Windows自带的命令行工具,如ftp命令。以下是详细的操作步骤:

创建批处理文件:

首先,你需要创建一个新的文本文件,将其扩展名更改为 .bat。你可以将其命名为upload_to_ftp.bat或其他你喜欢的名字。

编辑批处理文件:

使用文本编辑器(如Notepad)打开批处理文件。在其中输入以下内容:

@echo off
setlocal

REM 配置FTP服务器相关信息
set FTP_HOST=ftp.example.com
set FTP_USER=your_username
set FTP_PASS=your_password
set LOCAL_FOLDER=C:\path\to\local\folder
set FTP_FOLDER=/remote/folder

REM 创建一个包含FTP命令的临时文本文件
echo open %FTP_HOST% > ftp_commands.txt
echo %FTP_USER% >> ftp_commands.txt
echo %FTP_PASS% >> ftp_commands.txt
echo cd %FTP_FOLDER% >> ftp_commands.txt
echo bin >> ftp_commands.txt
echo lcd %LOCAL_FOLDER% >> ftp_commands.txt
echo mput *.* >> ftp_commands.txt
echo disconnect >> ftp_commands.txt
echo quit >> ftp_commands.txt

REM 使用ftp命令执行上传
ftp -s:ftp_commands.txt

REM 删除临时文本文件
del ftp_commands.txt

endlocal
@echo on

请注意,上述代码中需要替换以下值:

  • FTP_HOST: FTP服务器的主机名或IP地址。
  • FTP_USER: 连接到FTP服务器的用户名。
  • FTP_PASS: 对应的密码。
  • LOCAL_FOLDER: 本地文件夹的路径,你想要上传其中的内容。
  • FTP_FOLDER:在FTP服务器上你想要上传到的远程文件夹路径。

运行批处理文件:

保存批处理文件后,双击运行它。它将自动执行一系列FTP命令,将本地文件夹的内容上传到FTP服务器的指定文件夹中。
请确保在执行此操作之前,你已经测试过FTP服务器的连接和登录信息。另外,考虑到安全性,避免在批处理文件中明文写入密码,最好是使用安全的方式来存储和传递敏感信息。
BAT&PowerShell实现本地文件自动上传FTP服务器_第1张图片

二、使用BAT自动上传FTP

使用 PowerShell 脚本将本地文件夹内容上传到FTP服务器非常方便。以下是详细的操作步骤:

创建 PowerShell 脚本:

首先,你需要创建一个新的文本文件,将其扩展名更改为 .ps1。你可以将其命名为upload_to_ftp.ps1或其他你喜欢的名字。

编辑 PowerShell 脚本:

使用文本编辑器(如Notepad)打开 PowerShell 脚本文件。在其中输入以下内容:

# 配置FTP服务器相关信息
$ftpHost = "ftp.example.com"
$ftpUser = "your_username"
$ftpPass = "your_password"
$localFolder = "C:\path\to\local\folder"
$ftpFolder = "/remote/folder"

# 创建FTP请求对象
$ftpRequest = [System.Net.FtpWebRequest]::Create("ftp://$ftpHost$ftpFolder")
$ftpRequest.Credentials = New-Object System.Net.NetworkCredential($ftpUser, $ftpPass)
$ftpRequest.Method = [System.Net.WebRequestMethods+Ftp]::UploadFile

# 获取本地文件列表
$files = Get-ChildItem $localFolder

# 逐个上传文件
foreach ($file in $files) {
    $filePath = $file.FullName
    $ftpRequest.UseBinary = $true
    $ftpStream = $ftpRequest.GetRequestStream()
    $fileStream = [System.IO.File]::OpenRead($filePath)
    $buffer = New-Object byte[] 1024
    $count = $fileStream.Read($buffer, 0, 1024)
    while ($count -gt 0) {
        $ftpStream.Write($buffer, 0, $count)
        $count = $fileStream.Read($buffer, 0, 1024)
    }
    $ftpStream.Close()
    $fileStream.Close()
}

请注意,上述代码中需要替换以下值:

  • $ftpHost: FTP服务器的主机名或IP地址。
  • $ftpUser: 连接到FTP服务器的用户名。
  • $ftpPass: 对应的密码。
  • $localFolder: 本地文件夹的路径,你想要上传其中的内容。
  • $ftpFolder:在FTP服务器上你想要上传到的远程文件夹路径。

运行 PowerShell 脚本:

保存 PowerShell 脚本文件后,打开 PowerShell 命令行界面(Powershell 或 Windows Terminal),使用 cd 命令切换到脚本所在的文件夹,然后运行以下命令:

Set-ExecutionPolicy RemoteSigned
.\upload_to_ftp.ps1

如果提示需要确认执行策略,请输入 Y 来确认。

推荐阅读:
Windows可以安装Ubuntu,Ubuntu上也可以安装Powershell

你可能感兴趣的:(编程开发,服务器,运维,网络,Shell)