从PowerShell输入cmd的重定向

时间:2012-06-12 01:44:44

标签: redirect powershell input cmd

我试图用文件输入来运行mysql。我发现以下工作:

cmd / c'C:\ Program Files \ MySQL ... \ mysql -u user -pPassword databasename -f< inputfilename.sql'

问题是databasename($ database)和inputfilename.sql($ file)是变量,需要进行插值。我还没有找到任何方法使插值工作。

请注意invoke-expression和&将无法正常工作,因为PowerShell未实现<用于输入重定向。

有什么建议吗?

3 个答案:

答案 0 :(得分:1)

与你的完全相同。以其他SO答案为例,例如this one,这就是我写的:

$binPath = <local MySQL bin path>
$mySql = Join-Path $binPath "mysql"
...
$dosCommand = "$mySql --host=$dbHost --user=$dbUser --password=$dbPassword $dbName --verbose < ""$scriptPath"""
cmd.exe /c $dosCommand

答案 1 :(得分:0)

您可以在此类似问题Why is "<" input redirect not implemented in Powershell?

中使用Get-Content作为回答

答案 2 :(得分:-1)

看起来您将整个命令用单引号括起来。变量不会在单引号字符串中进行插值。试试这个:

cmd /c 'C:\Program Files\MySQL\mysql' -u user -pPassword $database -f < $file