gpt4 book ai didi

mysql - mysql 的 Powershell 代码不工作

转载 作者:行者123 更新时间:2023-11-30 23:08:39 26 4
gpt4 key购买 nike

我有以下 Powershell 代码,我在其中尝试对 mysql 数据库的最新备份文件进行排序,然后尝试导入该文件我根据脚本为此使用 Powershell 脚本,直到最后得到所需的 o/p 然后我复制此 o/p 并单独执行cmd 窗口它执行顺利但是在 power shell 中当我尝试做同样的事情时它失败并出现以下错误请帮助我

错误信息

  C:\wamp\bin\mysql\mysql5.5.24\bin\mysql.exe --user=root --password=xxx testdest < "C:\mysqltemp\testsrc_2013-12-23_10-46-AM.sql" 
cmd.exe : The system cannot find the file specified.
At C:\Users\IBM_ADMIN\AppData\Local\Temp\8a7b4576-97b2-42aa-a0eb-42bb934833a6.ps1:19 char:4
+ cmd <<<< /c " "$pathtomysqldump" --user=$param1 --password=$param2 $param3 < $param5 "
+ CategoryInfo : NotSpecified: (The system cann...file specified.:String) [], RemoteException
+ FullyQualifiedErrorId : NativeCommandError

脚本如下

##Select latest file created by Export of mysql dumper
$a=(get-childitem C:\mysqltemp | sort LastWriteTime -Descending | Select-Object Name | select -first 1 -ExpandProperty Name)
$pathtomysqldump = "C:\wamp\bin\mysql\mysql5.5.24\bin\mysql.exe"
#Write-Host "Print variable A -------------"
#$a
$a=$a.Replace(" ", "")
#Write-Host "After Triming ---------------"
#$a
$param1="root"
$param2="xxx"
$param3="testdest"
#$param4="""'<'"""
$param5="""C:\mysqltemp\$a"""
#$p1="$param1 $param2 $param3 < $param5"
# Invoke backup Command. /c forces the system to wait to do the backup
Write-Host " "$pathtomysqldump" --user=$param1 --password=$param2 $param3 < $param5 "

cmd /c " "$pathtomysqldump" --user=$param1 --password=$param2 $param3 < $param5 "

感谢并感谢您的帮助和时间。

最佳答案

这是一个常见的误解,涉及在 Windows 操作系统中调用命令行,尤其是从 PowerShell。

我强烈推荐使用 Start-Process cmdlet 启动进程而不是调用 cmd.exe .在头脑中解析和理解可执行文件的路径以及所有命令行参数要容易得多。当前脚本的问题是您试图调用具有以下名称的可执行文件:C:\wamp\bin\mysql\mysql5.5.24\bin\mysql.exe --user=root --password=xxx testdest < "C:\mysqltemp\testsrc_2013-12-23_10-46-AM.sql" ,已包含在对 cmd.exe 的调用中.显然,该文件不存在,因为您将所有参数都包含在文件系统路径中。

这里的层次太多,难以理解。相反,使用 Start-Process类似于下面的例子:

# 1. Define path to mysql.exe
$MySQL = "C:\wamp\bin\mysql\mysql5.5.24\bin\mysql.exe"
# 2. Define some parameters
$Param1 = 'value1';
$Param2 = 'value2';
$Param3 = 'value 3 with spaces';
# 3. Build the command line arguments
# NOTE: Since the value of $Param3 has spaces in it, we must
# surround the value with double quotes in the command line
$ArgumentList = '--user={0} --password={1} "{2}"' -f $Param1, $Param2, $Param3;
Write-Host -Object "Arguments are: $ArgumentList";

# 4. Call Start-Process
# NOTE: The -Wait parameter tells it to "wait"
# The -NoNewWindow parameter prevents a new window from popping up
# for the process.
Start-Process -FilePath $MySQL -ArgumentList $ArgumentList -Wait -NoNewWindow;

关于mysql - mysql 的 Powershell 代码不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20738465/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com