我在 Windows 上使用mr,它允许在任何存储库操作之前/之后运行任意命令。据我所知,这只是通过调用 perl 的system
函数来完成的。但是,我的设置似乎有些问题:当让 mr 运行以下批处理文件时,位于 d 中:
@echo off
copy /Y foo.bat bar.bat
我在最基本的 Windows 命令上遇到错误:
d:/foo.bat: line 1: @echo: command not found
d:/foo.bat: line 2: copy: command not found
为了确保 mr 不是问题,我跑了,perl -e 'system( "d:/foo.bat" )'
但输出是一样的。
使用 xcopy 而不是 copy,似乎找到了 xcopy 命令,因为现在是输出
d:/foo.bat: line 1: @echo: command not found
Invalid number of parameters
但是我不知道参数可能有什么问题。我想也许问题是批处理文件没有完全访问标准命令环境,所以我尝试通过显式运行它,perl -e 'system( "cmd /c d:\foo.bat" )'
但这只是启动 cmd 并且不运行命令(我必须退出命令行才能回到一个我在的地方)。
这里有什么问题?一个详细的解释会很棒。另外,我该如何解决这个问题?我更喜欢保留批处理文件的解决方案。