![](/img/trans.png)
[英]Perl script within batch script prompts for user input. How do I automatically parse that input within the batch script?
[英]How do I run a batch script from within a batch script using powershell?
如何从 powershell 中的批处理脚本中调用另一个批处理脚本。在 bash 中,我曾经使用 CALL 关键字完成此操作。 powershell 中是否有对应的术语?
我的问题基本上是使用批处理文件启动开发环境,然后使用第二个批处理文件在该环境中运行一些命令。
我尝试使用类似的东西
& Path\to\my\batchfile.bat -/c'command with spaces'
我期待它用批处理文件打开开发环境并运行提供的命令,但它只是继续运行批处理文件而不运行其中的命令。
我假设您的用例如下:
B.bat
,A.bat
,设置B.bat
依赖的环境。# "foo" and "bar" are sample arguments for B.bat
cmd /c 'c:\path\to\A.bat && c:\path\to\B.bat foo bar'
笔记:
在这种情况下不需要call
batch-file 命令; call
只需要在一个批处理文件中以将控制权返回给调用批处理文件的方式调用另一个批处理文件。
只要A.bat
在不使用setlocal
的情况下设置其变量, B.bat
也会看到那些(环境)变量。 [1]
如果A.bat
确实使用setlocal
- 它将 scope 的变量定义限制为该批处理文件[1] - 并且您无法修改A.bat
以删除此约束,则您的问题没有解决方案 - 无论您是否从cmd.exe
或 PowerShell 调用。(也就是说,除非A.bat
恰好设计为接受命令行作为参数执行。)
[1] 与PowerShell不同, cmd.exe
中所有变量都是环境变量。 但是,可选的setlocal
命令允许您将 scope 这样的变量添加到给定的批处理文件中(并且,当与endlocal
调用配对时,甚至可以添加到批处理文件的一部分)。 如需帮助,请运行setlocal /?
和endlocal /?
来自cmd.exe
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.