将文件从一个文件夹复制到另一个文件夹,然后使用当前 date/time 重命名,并使用 PowerShell 或 Python 脚本重命名新文件

Copy file from one folder to another and then rename using current date/time and new file ext using PowerShell or Python script

我没有任何使用 PowerShell 脚本的经验,所以我需要一些帮助来创建一个简单的 shell 脚本。 shell 脚本需要执行以下操作:

  1. 脚本将在目录 M:\ProgramData\Aspect Software\Unified IP\Advanced List Management\tenant1\xfer\CRM_Upload.upl.

  2. 中查找文件扩展名为 .upl 的文件名
  3. shell脚本需要将.upl文件复制到同目录下的文件夹中,目标文件夹名为"Uploads"(xfer\uploads).

  4. shell 脚本还需要将当前 date/time (hhmmssmmddyyyy) 复制到上传文件后附加到文件名的末尾带下划线的文件夹 (CRM_Upload_hhmmssmmddyyyy).

  5. 最后 shell 脚本需要将文件扩展名更改为 .txt 而不是原来的 .upl (CRM_Upload_hhmmssmmddyyyy.txt).

据我所知:


这是我使用 PowerShell 脚本进行的另一次尝试...我希望它复制文件并重命名而不是移动它。有人可以帮我解决这个问题吗?

Function RenameMoveFile($locationPath, $fileName, $extension1, $extension2, $archiveFolder)
{
$date = Get-Date -uFormat ""%y%m%d-%H%M%S""
$old = $locationPath + $fileName + $extension1
$new = $locationPath + $fileName + "_" + $date + $extension2
$archiveFolder = $locationPath + $archiveFolder + "\"
Rename-Item $old $new
Move-Item $new $archiveFolder
}
## This is the only part that we'd edit
RenameMoveFile -locationPath "M:\ProgramData\Aspect Software\Unified      IP\Advanced List Management\tenant1\xfer" -fileName "CRM_DIALER_UPLOAD" -    extension1 ".upl" -extension2 ".txt" -archiveFolder "Uploads"

*** 这是我正在尝试处理的 Python 脚本,但它仍然不正确..

导入 shutil 导入日期时间

变量定义

from System import Environment
data_dir_base = Environment.GetEnvironmentVariable('LMSRVSHARED')
xfer_dir = data_dir_base + "tenant1\xfer\"
source_file = xfer_dir + "CRM_DIALER_UPLOAD.txt"
now = datetime.datetime.now()
date = now.strftime("%Y%m%d_%H%M%S")
new_folder = xfer_dir + "Uploads\"
dest = new_folder + '_' + str(date) + '.txt'

主脚本

shutil.copy(source_file, dest)

***经过一些努力和反复试验,我的脚本开始工作了..

import shutil
import datetime

###   Variable Definitions
from System import Environment
data_dir_base = Environment.GetEnvironmentVariable('LMSRVSHARED')
xfer_dir = data_dir_base + "tenant1\xfer\"
source_file = xfer_dir + "CRM_DIALER_UPLOAD.txt"
now = datetime.datetime.now()
date = now.strftime("%Y%m%d_%H%M%S")
new_folder = xfer_dir + "Uploads\"
dest = new_folder + 'CRM_DIALER_UPLOAD' + '_' + str(date) + '.txt'

###   Main Script
shutil.copy(source_file, dest)

对于 windows 中的 shell 脚本,您可以使用批处理 (.bat),但我更喜欢 (.vbs)

这是您想要的 VbScript:

Dim fso, folder, objFolder, file, objFile
Dim strDir, strFileExtension, strNewDir, strNewExtension, strDate

' Parameters
strDir = "M:\ProgramData\Aspect Software\Unified IP\Advanced List Management\tenant1\xfer\"
strFileExtension = ".upl"
strNewDir = "M:\ProgramData\Aspect Software\Unified IP\Advanced List Management\tenant1\xfer\uploads\"
strNewExtension = ".txt"

Set fso = CreateObject("Scripting.FileSystemObject")  
Set folder = fso.GetFolder(strDir) 

' create new dir
If Not fso.FolderExists(strNewDir) Then
Set objFolder = fso.CreateFolder(strNewDir)
End If 

' search for file, get date, then copy and rename
For each file In folder.Files    
    If (InStr(file.name, ".") > 0) Then
            If (LCase(Mid(file.name, InStrRev(file.name, "."))) = strFileExtension) Then

            ' get only the file name
            Set objFile = fso.GetFile(file.name)

            ' get date
            strDate = Right("0" & DatePart("h",now), 2) _
            & Right("0" & DatePart("n",now), 2) _
            & Right("0" & DatePart("s",now), 2) _
                & Right("0" & DatePart("m",now), 2) _
                & Right("0" & DatePart("d",now), 2) _
            & DatePart("yyyy",now) _

            ' copy file
            CreateObject("Scripting.FileSystemObject").CopyFile file.name, strNewDir & fso.GetBaseName(objFile) & "_" & strDate & 

strNewExtension

         End If
    End If
Next
import shutil
import datetime

###   Variable Definitions
from System import Environment
data_dir_base = Environment.GetEnvironmentVariable('LMSRVSHARED')
xfer_dir = data_dir_base + "tenant1\xfer\"
source_file = xfer_dir + "CRM_DIALER_UPLOAD.txt"
now = datetime.datetime.now()
date = now.strftime("%Y%m%d_%H%M%S")
new_folder = xfer_dir + "Uploads\"
dest = new_folder + 'CRM_DIALER_UPLOAD' + '_' + str(date) + '.txt'

###   Main Script
shutil.copy(source_file, dest)