繁体   English   中英

从Powershell运行批处理文件时,“(。此时是意外。”

[英]“(. was unexpected at this time” when running batch file from Powershell

我正在使用Powershell远程到服务器,然后运行批处理文件以在远程服务器上执行。 我可以正常连接到服务器并启动批处理文件。 但是当我通过Powershell执行批处理文件时,我不断收到错误消息

“未指定:( ..这时是意外。:字符串)[],RemoteException”

但是,如果我从服务器本地执行该批处理文件,则该批处理文件可以正常运行。 通过故障排除和日志记录,我认为问题与批处理文件中的If-else块有关。 代码如下。 为了通过Powershell起作用,是否需要修复语法?

假定%prop_arg%是作为命令行参数传递的值。 其他变量是在批处理文件执行期间设置的,然后才能到达if else语句。 谢谢您的帮助。

if [%prop_arg%] == [] (
    @rem if nothing then use default value
    echo Running Execution for '%USERID%' on %DATE% >> %CURRENT_DIR%\Logs\%LOG_FILE% 
    echo.   >> %CURRENT_DIR%\Logs\%LOG_FILE% 
    echo GEM list:  >> %CURRENT_DIR%\Logs\%LOG_FILE% 
    gem list >> %CURRENT_DIR%\Logs\%LOG_FILE% 
    ruby %CURRENT_DIR%\testscript.rb %CURRENT_DIR%\framework_properties.txt 2>&1 | tee -a %CURRENT_DIR%\Logs\%LOG_FILE%

) else (

    echo Using properties file: %prop_arg%
    ruby %CURRENT_DIR%\testscript.rb %CURRENT_DIR%\%prop_arg% 2>&1 | tee -a %CURRENT_DIR%\Logs\%LOG_FILE%
)

看一下如何使用if / else语句。 您使用的语法错误。 您需要用括号{}括住if else的执行位,而不用括号()

批处理不是powershell,它们是不同的语言,并且具有不同的语法。 如果您在Powershell中运行批处理代码,它将尝试将其解释为Powershell。

如果您需要从powershell运行批处理文件,请执行

启动过程C:\\ path \\ to \\ file.bat

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM