SFTP传输文件并将文件移动到文件夹
这是我的第一篇文章,请原谅我的无知。我正在使用vbscript压缩特定文件夹中的所有.csv类型文件。经过一些谷歌搜索后,我找到了一个可行的vbscript来做到这一点,并启用了计划任务来自动执行此操作。SFTP传输文件并将文件移动到文件夹
接下来我需要做的是通过sftp传输zip文件,然后将该zip文件“移动”到另一个文件夹中。我相信前者可以通过命令行使用pscp.exe来实现,但是有人可以告诉我如何执行后者?
基本上压缩将每天完成两次,因此它将具有类似于yyyymmdd0900.zip(用于上午9点计划)和yyyymmdd1800.zip(用于下午6点计划)的时间戳。转移后,我想将生成的zip文件移动(不复制)到另一个文件夹中。
任何指针将不胜感激。谢谢大家。
编辑:这里是一些基于一些谷歌搜索一起打耳光的代码。它做我想要它做的事。请原谅“粘贴”,因为我无法弄清楚如何正确格式化。目前,它在复制后运行bat文件,但我只注意到我需要发送(使用PuTTY Secure Copy)“最新”zip文件,然后将其移至“已完成”文件夹。有人可以告诉我如何做到这一点?
荏苒文件和压缩文件
重命名错误继续下一步
strFilepath = “C:\文件”
strDestination =“C:\文件\完成\ “
strExtension =”csv“
strY耳=年(现在)
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)
对于每个OBJFILE在objFolder 。文件
strFileExt = objFSO.GetExtensionName(objFile.Path)
If LCase(strFileExt) = LCase(strExtension) Then
ZipFile objFile.Path, strZip
End If
接着
子的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
结束子
将文件移动到其他文件夹然后运行一个批处理文件来secury拷贝文件到FTP位置
“瓦尔
昏暗objFSO,objFileCopy,objFileDelete,圆点,文件,文件
昏暗strDestination,文件夹,子文件夹,fileCount ,strFilePath
“字符串
strDestination = “C:\文件\完成\”
strFilePath = “C:\文件”
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 =什么
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
%>
这会将文件移动到指定位置。
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
我们可以使用上述逻辑将文件传输到Unix系统中的远程目录吗?...如果需要用户名和密码登录到Unix系统,我可以在这里传递它们吗?..谢谢。 – Ejaz 2015-05-06 08:04:38
感谢您的回复。对不起,我应该明确指出,转移是一个远程位置,而我在本地对该文件所在的盒子说的“移动”。我也想在执行zip之后自动执行此操作,然后让sftp从文件所在的位置传输它。希望我有所帮助。 – molecule 2010-06-08 03:41:38
SFTP根本没有工作目录的概念 - 根据标准,所有路径必须是绝对路径。这是客户端软件,模拟当前目录概念。 – 2010-06-08 11:04:43
@Eugene,很好的说明。我会更新答案。谢谢。 – 2010-06-08 12:59:33