基于SQL查询的Powershell重命名文件

基于SQL查询的Powershell重命名文件,sql,powershell,sql-server-2012,Sql,Powershell,Sql Server 2012,我们为产品图像拍摄了大量照片。我发现了一个软件,它可以读取图像中嵌入的条形码,并将图像重命名为图像中的条形码,现在我要做的是使用powershell和SQL查询再次使用Productid重命名文件 declare @$CliRef nvarchar(max) set @$CliRef = '5015807416980' Select convert(nvarchar(max), productid) as ID FROM products WHERE products.Barcod

我们为产品图像拍摄了大量照片。我发现了一个软件,它可以读取图像中嵌入的条形码,并将图像重命名为图像中的条形码,现在我要做的是使用powershell和SQL查询再次使用Productid重命名文件

    declare @$CliRef nvarchar(max)
set @$CliRef = '5015807416980'

Select   convert(nvarchar(max), productid) as ID FROM products WHERE products.Barcode = @$CliRef
我在网上发现了一个Powershell脚本,但我一定是做错了什么,因为它将文件重命名为空白而不是productid,我对Powershell非常陌生,所以有点卡住了,希望您提供帮助

    $Database = "training"
$Server = "ART-WM01"

##Not sure i need this bit 

function Select-Info($CliRef) 
   {

  $SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Data Source=$Server;Initial Catalog=$Database;Integrated Security = True"
$SqlConnection.Open()

    $conn.open()
    $query = “Select convert(varchar,producdid )as ID FROM products WHERE barcode = '$CliRef'”
    $cmd = New-Object System.Data.SqlClient.SqlCommand($sql,$conn)
    $cmd.connection = $SqlConnection
    $cmd.commandtext = $query
    $result = $cmd.executenonquery()
    $SqlConnection.Close()

    return $query
    }

## Return ID from Database
 function Return-Info($CliRef)
{

$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Data Source=$Server;Initial Catalog=$Database;Integrated Security = True"
$SqlConnection.Open()
$cmd = New-Object System.Data.SqlClient.SqlCommand
$cmd.commandtext = “Select convert(varchar, productid) as ID FROM products WHERE barcode = '$CliRef'”
$cmd.connection = $SqlConnection
$result = $cmd.ExecuteScalar()
$SqlConnection.Close()

return $result

}

 ## Collect the image names
 $FiNms = Get-ChildItem C:\JJC\Test_Dump -Name

 ## Loop through each Image name
 foreach ($FiNm in $FiNms)

{

 ## Variable for current File path
 $file = “C:\JJC\Test_Dump\” + $FiNm
 ##  Variable for new File path
 $newFile = “C:\JJC\Test_Dump\renamed” + $FiNm

$ID = Return-Info $FiNm

$ID = $ID + “.tiff”

##Copy-Item $file -Destination $newFile 

##Copy-Item $file -Destination = “C:\JJC\\Test_Dump\renamed\”
Rename-Item $file $ID -force

}

从您发布的代码来看,您的SQL查询可能没有返回预期的结果。您是否尝试过执行查询并查看它返回的内容?此外,您的查询使用数据库内置函数,即
convert
。内置函数不是标准SQL的一部分,因此如果您说明使用的是什么DBMS,它可能会帮助人们回答您的问题。您好,使用MSBD 2012,我检查了SQL,看起来还可以吗,虽然我有一个拼写错误,但输出仍然是一个未命名的文件作为旁注:帮你自己一个忙,用直引号替换所有难看的卷曲“智能引号”。总之,它们看起来不错,但在代码中,它们是不好的。