如何使用PowerShell从热文件夹中获取最后一个文件?

rcurrydev

我们有一个客户端,每小时将一个.pkg文件上传到我们FTP上的指定文件夹。我想创建一个SQL Server代理作业来抓取该文件,将数据导入到SQL Server DB中的表中,然后移动并重命名该文件。

我成功地做到了这一点(使用下面的代码),除非只剩下1个文件。当仅剩一个文件时,它将不会导入...,然后它将移动其中包含文件的实际文件夹(为此重命名文件夹)。我还提供了以下错误。

脚本:

Function AutoImportCommaFlatFilesTopOne($location, $server, $database)
{
    $connection = New-Object System.Data.SqlClient.SqlConnection
    $connection.ConnectionString = "Data Source=" + $server + ";Database=" + $database + ";integrated security=true"


    $files = Get-ChildItem $location 
    $fileName = $files[0]


    $full = $location + $fileName
    $table = "rawUSPS" 

    $insertData = New-Object System.Data.SqlClient.SqlCommand
    $insertData.CommandText = "EXECUTE stp_CommaBulkInsert @1,@2"
    $insertData.Parameters.Add("@1", $full)
    $insertData.Parameters.Add("@2", $table)
    $insertData.Connection = $connection

    $connection.Open()
    $insertData.ExecuteNonQuery()
    $connection.Close()

    move-item $full (("C:\Test\archiveFolder\{0:yyyyMMdd_HHmmss}" + "_" + $fileName.BaseName + ".log") -f (get-date))

}

AutoImportCommaFlatFilesTopOne -location "C:\Test\testFolder\" -server "LAN-DP-03" -database "FlatFileInsertTestingDB"

错误:

PS C:\Users\rcurry> C:\Scripts\140627.ps1
Unable to index into an object of type System.IO.FileInfo.
At C:\Scripts\140627.ps1:8 char:24
+     $fileName = $files[ <<<< 0]
+ CategoryInfo          : InvalidOperation: (0:Int32) [], RuntimeException
+ FullyQualifiedErrorId : CannotIndex



Exception calling "ExecuteNonQuery" with "0" argument(s): "Cannot bulk load because the file "C:\Test\testFolder\" could not be opened. Operating system error
code 3(The system cannot find the path specified.)."
At C:\Scripts\140627.ps1:21 char:32
+     $insertData.ExecuteNonQuery <<<< ()
+ CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : DotNetMethodException
rcurrydev

我解决了这个问题。每位水电开发人员都可以访问stackoverflow.com/questions/14714284/…:>嗯,事实证明,这是一个奇怪的现象,正是由于目录中只有一个文件。一些搜索显示,在这种情况下,PowerShell返回标量对象而不是数组。该对象没有count属性,因此没有要检索的任何内容。所以我只需要使用'@'强制一个数组。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何获取存储文件的最后一个文件夹的名称(不使用宏)

使用 Excel 2016 获取去年上月文件夹中的最后一个文件

如何获取使用`find`找到的最后一个文件夹的名称

如何使用vbscript在文件夹中查找最后一个mdified子文件夹

如何使用一个热编码的csv文件作为GroundTruth将图像移动到文件夹中?

如何使用ls / find / etc获取最后一个文件夹(按字母顺序降序排列并匹配模式)?

如何从路径字符串获取最后一个文件夹?

使用powershell将不同文件夹中的各种文件保存到一个文件夹中

如何从一个热编码的csv文件创建文件夹?

如何从给定路径中批量删除最后一个文件夹

如何访问目录中的最后一个文件夹?

如何通过命令在Matlab中复制最后一个子文件夹

如何使用 timstamp 附加文件名选择正确的文件并将最后放置的文件复制到另一个文件夹中?

从网址获取第一个和最后一个文件夹

如何使用Powershell将文件夹的内容复制到另一个特定的文件夹?

如何使用Java从一个文件夹中获取所有文本文件?

如何每月获取一个文件夹中修改的文件数

如何使用os python获取另一个文件夹中文件的路径

获取S3文件夹中的最后一个文件名?

使用glob函数循环xml文件只会循环文件夹中的最后一个文件

如何在一个文件夹中的文件夹内移动文件

如何确定另一个文件夹中存在的文件或文件夹?

如何使用Powershell将文件从一个文件夹复制并重命名到另一个文件夹?

如何使用PowerShell仅将新文件从一个文件夹复制到另一个文件夹

如何使用powershell将具有不同名称的文件从一个文件夹复制到另一个文件夹?

如何截断提示中显示第一个和最后一个文件夹的工作目录?

Bash脚本编写并使用TAR归档文件夹,如何在一个文件夹中抓取5个最新的文件夹?

如何从php的一个文件夹中的一个单独的文件夹中收集文件?

如何观看文件夹文件中的第17行(或最后一个,如果更少的话)?