gpt4 book ai didi

powershell - 如何修复批处理文件中的/f循环以在目录中运行多个Powershell脚本

转载 作者:行者123 更新时间:2023-12-02 23:35:48 29 4
gpt4 key购买 nike

我试图使以下命令运行位于指定目录中的多个powershell脚本文件:

@echo off
for /F %%f in ('dir /b "C:\ProgramData\MyScripts\"') do Powershell.exe -ExecutionPolicy Bypass -NoLogo -WindowStyle Hidden -File C:\ProgramData\Scripts\%%f
pause

它在命令行中工作正常,但是在批处理文件中不起作用(即使已将“%”更改为“%%”)。有什么想法可以使我工作吗?

最佳答案

我建议您重组您的方法,以避免重复脚本的目录路径-这很可能是问题的根源:

让PowerShell执行文件枚举:

@echo off
powershell -ExecutionPolicy Bypass -WindowStyle Hidden -Command ^
"dir C:\ProgramData\MyScripts\*.ps1 | foreach { & $_ }"
pause

请注意,为了提交完整的PowerShell命令,必须从 -File切换到 -Command。这样就不需要 -NoLogo了。

还可以考虑添加 -NoProfile以禁止加载配置文件。

至于PowerShell命令:
  • dir是为了简洁起见,但请注意,它是一个别名,即Get-ChildItem命令。
  • foreachForEach-Object cmdlet的别名,它为每个输入对象(文件)运行关联的脚本块({ ... }),反射(reflect)在自动变量$_中。
  • &是调用运算符,它是调用存储在变量中的命令(名称或路径)所必需的。


  • 如果您希望坚持使用原始方法并要解决此问题,请参见 Compo's helpful answer

    关于powershell - 如何修复批处理文件中的/f循环以在目录中运行多个Powershell脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55382196/

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