0

我正在尝试从我的 build.xml 调用注销命令。我在我的 ant 目标中尝试了几种组合,例如:

<target name="bat">
<echo>Executing batch script</echo>
  <exec dir="C:\WINDOWS\system32" executable="cmd">
    <arg value="/c"/>
    <arg value="logoff"/>
  </exec>
</target>

但每次,我都会收到这个错误:“注销不被识别为内部或外部命令、可运行程序或批处理文件”

我不知道如何解决这个问题。感谢您的帮助。

编辑:

注销.xml

<?xml version="1.0"?>
<project name="logoff" default="off" basedir=".">
    <target name="off">
        <exec executable="cmd">
            <arg value="/c"/> 
            <arg value="logoff"/>
        </exec>
    </target>
</project>

注销_xml.bat:

@echo off
set ANT_HOME=W:\lib\org.apache.ant
set JAVA_HOME=C:\Program Files (x86)\Java\jdk1.6.0_24 
set PATH=%PATH%;%ANT_HOME%\bin 
set BUILD_PATH=W:\logoff.xml 
set ANT=call ant -buildfile %BUILD_PATH% 
%ANT% 
pause

echo %PATH%(带有 buid.xml bat 目标)

[exec] C:\Outils\GPS_510\bin;C:\Outils\GNATPRO_6.1.2\bin;C:\WINDOWS\system3
2;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Outils\Python25;C:\MinGW\bin;C:\Program
Files (x86)\IBM\RationalSDLC\common;C:\Program Files (x86)\IBM\RationalSDLC\Cle
arCase\bin;C:\Program Files (x86)\doxygen\bin;C:\Program Files (x86)\Citrix\Syst
em32\Citrix\IMA;C:\Program Files (x86)\Citrix\System32\Citrix\IMA\Subsystems;C:\
WINDOWS\System32\Citrix\IMA;C:\Program Files (x86)\Citrix\system32;C:\Program Fi
les (x86)\commonfiles\Citrix\System32\;C:\MinGW\msys\1.0\bin;c:\outils\cygw
in\bin;C:\WINDOWS\system32\WindowsPowerShell\v1.0;C:\Program Files (x86)\commonfiles
\Citrix\System32;C:\Program Files (x86)\Java\jre6\bin;lib\org.apache.an
t\bin

编辑:当我用 Ant 启动注销时,我得到:

[exec] Disconnecting
[exec] "logoff.exe is not recognized as an internal or external command, operable program or batch file"
4

3 回答 3

1

我无法想象为什么有人会在构建脚本中这样做。

请不要这样做。

但如果你这样做,不要 exec cmd.exe-logoff.exe直接调用

<project name="logoff" default="logoff" basedir=".">
    <target name="logoff">
        <exec executable="logoff" />
    </target>
</project>

logoff.exe这是一个非常安全的假设%PATH%,如果由于某种原因不是,请设置一个属性以获取到的绝对路径logoff.exe

<project name="logoff" default="logoff" basedir=".">
    <property name="system32.dir" location="C:\Windows\System32" />        

    <target name="logoff">
        <exec executable="${system32.dir}\logoff" />
    </target>
</project>

我觉得打字很脏。

于 2013-09-19T22:19:01.577 回答
0

您应该删除该目录属性....这对我有用:

    <?xml version="1.0" encoding="UTF-8" ?>
    <project name="logoff" default="default" basedir=".">
        <target name="default">
        <exec executable="cmd">
            <arg value="/c"/>
            <arg value="logoff"/>
        </exec> 
    </target>
    </project>

编辑:

@echo off
set ANT_HOME=W:\lib\org.apache.ant
set PATH=%PATH%;%ANT_HOME%\bin 
set BUILD_PATH=W:\logoff.xml 
set ANT=call ant -buildfile %BUILD_PATH% 
%ANT% 
pause
于 2013-09-16T07:40:56.563 回答
0

尝试shutdown /l /f改用,如此处建议:

http://answers.microsoft.com/en-us/windows/forum/windows_7-security/how-to-force-logoff-from-command-line/8e7507e0-12c8-4ac7-8d5e-a1917e4af997

这也可能会有所帮助(描述如何在 java 中执行此操作),因为 ant 使用类似的(与 java 相似的)参数:

使用 Java 关闭 Windows

于 2013-09-16T07:41:56.897 回答