【问题标题】:Modify argument in batch script修改批处理脚本中的参数
【发布时间】:2014-04-14 06:22:16
【问题描述】:

简而言之,基本上我们需要一种方法来转换包含此内容的批处理文件 -> sqlcmd -S rave -v 您的付款延迟 = %1 -i rave_params.sql -o alert.txt

-到-

包含此内容的新批处理文件 -> sqlcmd -S rave -v "'Your payment is late'" = %1 -i rave_params.sql -o alert.txt

【问题讨论】:

  • 你想要双引号和单引号? old_batchfile.bat 正在生成 new_batchfile.bat ?它应该是文字 %1 还是参数的值?如:如果 %1"foo" 你想要 "'themessage = foo'" ?
  • 点击下方问题edit进行更新。
  • 我添加了一些信息来帮助澄清问题。
  • 您确定您使用的是 MySQL 吗? SQLCMD 是 Microsoft 工具,语法应为 -v var = "string with spaces"。在这种情况下,您应该能够通过“引用”发送到 old_batchfile.bat 的参数来获得相同的结果。例如old_batchfile.bat "this is the message"。这应该会产生一个sqlcmd -S rave -v themessage = "this is the message" -i rave_params.sql -o alert.txt 的命令行
  • 你的两个解释有不一致的地方。在第一个中您引用 themessage = %1 在第二个中您只引用 themessage 而不是 %1。哪一个是正确的?

标签: sql batch-file powershell vbscript wsh


【解决方案1】:

你的问题对我来说不是很清楚。您想根据旧批处理文件的内容创建一个新的批处理文件吗?如果是这样,我建议使用 PowerShell 进行转换:

$srch = '-v\s*(.*?)\s*=\s*%1'
$repl = "-v `"'`$1'`" = %1"

(Get-Content old.bat) -replace $srch, $repl | Set-Content new.bat

【讨论】:

  • 我添加了一些信息来帮助澄清问题。
  • 是的。我相信实际上这就是我们想要做的。根据旧批处理文件的内容创建一个新的批处理文件。
  • 简而言之,基本上我们需要一种方法来转换包含此内容的批处理文件 -> sqlcmd -S rave -v 您的付款延迟 = %1 -i rave_params.sql -o alert。 txt -to- 包含此内容的新批处理文件 -> sqlcmd -S rave -v "'Your payment is late'" = %1 -i rave_params.sql -o alert.txt
  • 我试过这个 powershell 脚本。它看起来好像会完成我们需要的。它会生成新的批处理文件还是我需要一个已经到位?谢谢。我在旧蝙蝠上运行了脚本,但它没有更新新蝙蝠。我错过了什么吗?
  • @woodlawn_la:您可以将我的答案中的代码复制/粘贴到 PowerShell 控制台窗口中。它将从当前工作目录中读取一个文件old.bat,并在同一目录中创建一个输出文件new.bat。现有文件new.bat 将被覆盖。
猜你喜欢
  • 1970-01-01
  • 2011-03-25
  • 2013-11-19
  • 2022-01-16
  • 1970-01-01
  • 2011-05-10
  • 1970-01-01
  • 1970-01-01
  • 2015-07-06
相关资源
最近更新 更多