首页 文章

SFTP传输文件并将文件移动到文件夹

提问于
浏览
1

这是我的第一篇文章,请原谅我的无知 . 我使用vbscript压缩特定文件夹中的所有.csv类型文件 . 在一些谷歌搜索之后,我发现了一个可行的vbscript来执行此操作并启用了计划任务来自动执行此操作 .

我接下来需要做的是通过sftp传输zip文件,然后将该zip文件“移动”到另一个文件夹中 . 我相信前者可以通过命令行使用pscp.exe实现,但有人可以告诉我如何做后者吗?

基本上,压缩将每天进行两次,因此它将具有类似于yyyymmdd0900.zip(对于上午9点的时间表)和yyyymmdd1800.zip(对于下午6点的时间表)的时间戳 . 转移后,我想将生成的zip文件移动(不复制)到另一个文件夹中 .

任何指针都将非常感激 . 谢谢大家 .

编辑:这是我根据一些谷歌搜索打了一些代码 . 它做我想做的事 . 请原谅“粘贴”,因为我无法弄清楚如何正确格式化 . 目前,它在复制后运行bat文件但我只是注意到我需要发送(使用PuTTY Secure Copy)“最新”zip文件,然后将其移动到“completed”文件夹 . 有人可以告诉我该怎么做吗?

压缩文件并重命名zip文件

On Error Resume Next

strFilepath =“c:\ files”

strDestination =“c:\ files \ completed \”

strExtension =“csv”

strYear =年(现在)

strMonth =右(“0”和月(现在),2)

strDay =右(“0”和日(现在),2)

strHour =右(“0”和小时(现在),2)

strMinute =右(“0”和分钟(现在),2)

strZip = strFilepath&“\”&strYear&strMonth&strDay&strHour&strMinute&“.zip”

设置objFSO = CreateObject(“Scripting.FileSystemObject”)

设置objFolder = objFSO.GetFolder(strFilepath)

对于objFolder.Files中的每个objFile

strFileExt = objFSO.GetExtensionName(objFile.Path)
    If LCase(strFileExt) = LCase(strExtension) Then
    ZipFile objFile.Path, strZip
End If

下一个

Sub ZipFile(strFileToZip,strArchive)

设置objFSO = CreateObject(“Scripting.FileSystemObject”)

If Not objFSO.FileExists(strArchive) Then
    Set objTxt = objFSO.CreateTextFile(strArchive)
    objTxt.Write "PK" & Chr(5) & Chr(6) & String(18, Chr(0))
    objTxt.Close
End If

Set objApp = CreateObject( "Shell.Application" )

intCount = objApp.NameSpace(strArchive).Items.Count + 1

objApp.NameSpace(strArchive).CopyHere strFileToZip

Do
    WScript.Sleep 200
    set objNameSpace = objApp.NameSpace(strArchive)

    If Not objNameSpace is nothing Then        
        If objNameSpace.Items.Count = intCount Then
            Exit Do
        End If
    End If
Loop

结束子

将文件移动到其他文件夹,然后将bat文件运行到secury复制文件到FTP位置

“瓦尔

Dim objFSO,objFileCopy,objFileDelete,dot,files,file

Dim strDestination,文件夹,子文件夹,fileCount,strFilePath

“字符串

strDestination =“C:\ Files \ Completed”

strFilePath =“C:\ Files”

set objFSO = CreateObject("Scripting.fileSystemObject") 

set folder = objFSO.getFolder(strFilePath)

对于每个文件在folder.files中

设置objFileCopy = objFSO.GetFile(文件)

If objFSO.GetExtensionName(file) = "zip" Then                
    objFSO.MoveFile objFileCopy.Path, strDestination
   End If

下一个

昏暗的外壳

设置shell = createobject(“wscript.shell”)

Shell.run“C:\ testsend.bat”

设置shell =什么都没有

2 回答

  • 0

    这会将文件移动到指定位置 .

    Sub Move_File(Source_File, Destination_Folder)
        Dim fso
        Set fso = CreateObject("Scripting.FileSystemObject")
        fso.MoveFile Source_File, Destination_Folder
        Set fso = Nothing
    End Sub
    
  • 0

    sftp客户端提供了在执行任何文件传输之前更改主机上的工作目录的方法 . 最好将文件直接传输到目标位置 .

    注意:上述答案是误解问题的结果 . 我读它意味着文件必须在目的地上移动,但真正的操作是在原点上移动文件 .

    我发现以下示例代码在检查文件存在后移动文件 . 允许使用通配符作为源参数,但FileExists可能不起作用 . 需要vbscript 2.0才能工作 .

    <%
    dim filesys
    set filesys=CreateObject("Scripting.FileSystemObject")
    If filesys.FileExists("c:\sourcefolder\anyfile.html") Then
       filesys.MoveFile "c:\sourcefolder\anyfile.html", "c:\destfolder\"
    End If
    %>
    

相关问题