Powershell : Transfer yesterday‘s EOD file to SMB folder

bash 复制代码
# *****************************************************************************************************************

# PowerShell Script - Code by Moshow@https://zhengkai.blog.csdn.net/

#        -> transfer yesterday's EOD file to destination SMB folder

# *****************************************************************************************************************

 

# 1. Got yyMMdd format of yesterday's date

$yesterday = (Get-Date).AddDays(-1).ToString('yyyyMMdd')

$pattern = "YOUR_EOD_$yesterday*.TXT"

$timestamp = (Get-Date).ToString('yyyy-MM-dd HH:mm:ss')

 

# 2. Search for the file in the source folder

$sourceFolder = "E:\DataShare\EOD_IMPORT"

$file = Get-ChildItem -Path $sourceFolder -Filter $pattern | Select-Object -First 1

 

# 3. Check if the file exists and is not empty

if ($file) {

    # 4. Transfer the file to the destination SMB folder

    $destination = "\\server111\DataShare\EOD_IMPORT\$($file.Name)"

 

    Start-BitsTransfer -Source $file.FullName -Destination $destination

    $logMessage = "[$timestamp] Transfer: $($file.FullName) -> $destination"

   

} else {

    $logMessage =  "[$timestamp] Not Found: $pattern"

}

# 5. Log the transfer result

$logFile = "E:\EOD_transfer_log.txt"

Write-Host $logMessage

Add-Content -Path $logFile -Value $logMessage

代码解读

  1. 注释部分:

    bash 复制代码
    https://zhengkai.blog.csdn.net/

    这一部分是注释,说明了脚本的作者和脚本的功能。

  2. 获取昨天的日期:

    复制代码
    $yesterday = (Get-Date).AddDays(-1).ToString('yyMMdd')

    这行代码获取昨天的日期,并将其格式化为 yyMMdd 的形式。例如,如果昨天是 2023 年 5 月 25 日,$yesterday 将会是 230525

  3. 构建文件名模式:

    复制代码
    $pattern = "LMP_CUSTACCT_FILE_D$yesterday*.TXT"

    使用昨天的日期构建一个文件名模式,表示要查找以 LMP_CUSTACCT_FILE_D 开头,后跟昨天的日期,并以 .TXT 结尾的文件。

  4. 获取当前时间戳:

    复制代码
    $timestamp = (Get-Date).ToString('yyyy-MM-dd HH:mm:ss')

    获取当前时间的时间戳,格式为 yyyy-MM-dd HH:mm:ss,用于记录日志。

  5. 搜索源文件夹中的文件:

    复制代码
    $sourceFolder = "E:\DataShare\LMP_PROD_EXTERNAL\EoD_Import"
    $file = Get-ChildItem -Path $sourceFolder -Filter $pattern | Select-Object -First 1

    在指定的源文件夹中搜索符合模式的文件。如果找到了多个文件,只选择第一个。

  6. 检查文件是否存在且不为空:

    复制代码
    if ($file) {

    如果找到了文件,则进入条件语句。

  7. 转移文件到目标 SMB 文件夹:

    复制代码
    $destination = "\\server111\DataShare\LMP_PROD_EXTERNAL\EOD_IMPORT\$($file.Name)"
    Start-BitsTransfer -Source $file.FullName -Destination $destination
    $logMessage = "[$timestamp] Transfer: $($file.FullName) -> $destination"
    • 构建目标文件夹路径。
    • 使用 Start-BitsTransfer 命令将文件从源路径转移到目标路径。
    • 记录转移的日志信息。
  8. 处理未找到文件的情况:

    复制代码
    } else {
        $logMessage =  "[$timestamp] Not Found: $pattern"
    }

    如果没有找到文件,则记录未找到的日志信息。

  9. 记录转移结果到日志文件:

    复制代码
    $logFile = "E:\EOD_transfer_log.txt"
    Write-Host $logMessage
    Add-Content -Path $logFile -Value $logMessage
    • 指定日志文件的路径。
    • 使用 Write-Host 输出日志信息到控制台。
    • 使用 Add-Content 将日志信息追加到日志文件中。
相关推荐
DogDaoDao3 天前
Windows 开发提效工具全景指南:60+ 工具的工程化分层配置
windows·git·程序员·开发工具·powershell·everything·msys2
winfredzhang22 天前
用 wxPython 打造「Claude Code 任务启动器」:一个把 AI CLI 变成一键工作流的桌面工具
python·wxpython·powershell·剪贴板·claudecodecli
鬼手点金23 天前
Hermes‑Agent 使用教程
python·ubuntu·powershell·cmd·ai agent·opencode·hermes
寒水馨1 个月前
macOS下载、安装PowerShell-v7.6.4(附安装包powershell-7.6.4-osx-arm64.pkg)
macos·自动化·跨平台·shell·脚本·命令行·powershell
寒水馨1 个月前
Linux下载、安装PowerShell-v7.6.4(附安装包powershell-7.6.4-linux-x64.tar.gz)
linux·跨平台·自动化运维·devops·命令行·powershell·脚本语言
儒雅的烤地瓜1 个月前
计算机网络 | 网络诊断双刃剑:Tracert路由追踪实战与Windows防火墙端口配置指南
tcp/ip·计算机网络·wireshark·防火墙·powershell·cmd
vortex52 个月前
PowerShell Provider 机制详解:从文件系统到注册表的统一抽象
windows·powershell
无为之士3 个月前
Windows 批量打印 PDF 工具分享:支持文件夹、指定文件、当天文件、预览列表
windows·powershell
阆遤3 个月前
Windows环境安装Hermes Desktop安装
powershell·ai agent·hermes desktop
DONSEE广东东信智能读卡器3 个月前
用PowerShell实现Windows 本地 WSS/HTTPS 自签名证书配置方法
windows·网络协议·https·powershell·身份证阅读器