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 将日志信息追加到日志文件中。
相关推荐
.格子衫.22 天前
powershell批处理——io校验
测试·powershell
蓝黑20201 个月前
PowerShell从5.1升级到7.X
windows·powershell
zjx23882 个月前
使用 PowerShell 脚本 + FFmpeg 在 Windows 系统中批量计算 MP4视频 文件的总时长
powershell
DogDaoDao2 个月前
从零开始:Windows 系统中 PowerShell 配置 FFmpeg 的详细步骤
windows·ffmpeg·音视频·ffplay·powershell·视频直播·ffprobe
三巧3 个月前
判断按键盘是否好使的开机自启动PowerShell脚本
计算机外设·powershell
一夜空中最亮的星一4 个月前
【Windows】PowerShell 缓存区大小调节
windows·缓存·powershell·ps·windows 终端
安冬的码畜日常4 个月前
【工欲善其事】利用 DeepSeek 实现复杂 Git 操作:从原项目剥离出子版本树并同步到新的代码库中
git·ai·powershell·cherry-pick·deepseek·deepseek r1·deepseek v3
Eastmount4 个月前
[论文阅读] (36)C&S22 MPSAutodetect:基于自编码器的恶意Powershell脚本检测模型
论文阅读·系统安全·powershell·自编码器·恶意代码检测
H轨迹H5 个月前
一文学会powshell使用及功能
网络安全·渗透测试·powershell·红队全栈