2025年2月15日 星期六 甲辰(龙)年 腊月十五 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > DOS/BAT与(脚本)

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

时间:03-16来源:作者:点击数:45

运维工作中,经常需要一些脚本来实现自动化,今天分享本地文件自动上传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自动上传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

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门