如何使用脚本读取文件属性?

时间:2015-11-15 18:53:57

标签: sql powershell batch-file

我需要编写PowerShell或批处理脚本,以便按特定时间表读取文件夹中文件的属性,并将其存储在SQL表中。

脚本将读取文件的名称,日期时间戳,大小和文件夹目录,并将这四个字段保存在数据库中。

2 个答案:

答案 0 :(得分:2)

试试这样:

@echo off

for %%a in (*.*) do (
 echo %%~ta
 echo %%~za
 echo %%~da
 echo %%~pa
 echo %%~na
 echo %%~xa
 echo %%~tzdpnxa
 pause)

并使用 FOR /?来理解。

对于BAT中的SQL查询,请查看here

答案 1 :(得分:0)

这是一个可以帮助您的脚本。 首先,您需要从HERE

下载Powershell MySQL连接器
  

由于我没有在这台机器上安装MySQL,我无法做到   测试代码。 (MySQL连接和插入来自HERE

function ConnectMySQL([string]$user,[string]$pass,[string]$MySQLHost,[string]$database) {

  # Load MySQL .NET Connector Objects
  [void][system.reflection.Assembly]::LoadWithPartialName("MySql.Data")

  # Open Connection
  $connStr = "server=" + $MySQLHost + ";port=3306;uid=" + $user + ";pwd=" + $pass + ";database="+$database+";Pooling=FALSE"
  $conn = New-Object MySql.Data.MySqlClient.MySqlConnection($connStr)
  $conn.Open()
  $cmd = New-Object MySql.Data.MySqlClient.MySqlCommand("USE $database", $conn)
  return $conn

}

function WriteMySQLQuery($conn, [string]$query) {

  $command = $conn.CreateCommand()
  $command.CommandText = $query
  $RowsInserted = $command.ExecuteNonQuery()
  $command.Dispose()
  if ($RowsInserted) {
    return $RowInserted
  } else {
    return $false
  }
}
$user ="test"
$pass = "VeryStrongPassword"
$MySQLHost = "Localhost"
$database = "MyDB"


# Connect to MySQL Database
$conn = ConnectMySQL $user $pass $MySQLHost $database



 Get-ItemProperty C:\file.csv | select Name, CreationTime, Length, DirectoryName | %{

    $query = "INSERT INTO Table SET file_name='"+$PSItem.Name+"', file_size='"+$PSITEM.Length+"', file_creationdate='"+$PSitem.CreationTime+"', file_dir='"+$PSItem.DirectoryName+"'"
    # Insert into MYSQL
    $Rows =  WriteMySQLQuery $conn $query
    Write $Rows " inserted into database"

 }