我需要编写PowerShell或批处理脚本,以便按特定时间表读取文件夹中文件的属性,并将其存储在SQL表中。
脚本将读取文件的名称,日期时间戳,大小和文件夹目录,并将这四个字段保存在数据库中。
答案 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"
}