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 将日志信息追加到日志文件中。
相关推荐
IOT那些事儿5 天前
Windows PowerShell配置Qt5编译运行环境
windows·powershell·qt5
今夕资源网8 天前
powershell工具包 安装升级脚本并设置UTF-8 环境快捷方式创建 将powershell的编码默认改为UTF-8
开发语言·utf-8·powershell·utf-8编码·powershell7·powershell5·设置utf-8编码
fengyehongWorld13 天前
Powershell 注册.dll类库到系统
powershell
就叫年华吧丶13 天前
Git Bash、CMD 与 PowerShell 的区别详解
linux·git·命令行·powershell·cmd·gitbash
Soari18 天前
Ziggo-CaaS-Switch软件配置教程
bash·powershell·tsn 交换机
LAM LAB25 天前
【shell】win10 Powershell字体美化
powershell
humors2211 个月前
AI工具合集,不定期更新
人工智能·windows·ai·工具·powershell·deepseek
fengyehongWorld1 个月前
Powershell 自动安装Excel自定义标签页,开启宏
powershell
西西弗Sisyphus1 个月前
PowerShell 配置为启动时自动激活 Conda 环境
conda·powershell
夫唯不争,故无尤也2 个月前
curl与Invoke-RestMethod核心区别
后端·fastapi·powershell·curl