sh.exe阻止Windows cmd move命令运行

时间:2018-08-21 03:15:04

标签: git shell sh acsl rtools

我正在运行一个名为ACSLX的旧应用程序。它正在尝试调用DOS移动命令,但是由于sh.exe在我的路径中,因此出现错误。 sh.exeGit的一部分,也是RTools的一部分,它们都是我已经安装的。如您所见,它只是在尝试移动文件,但这失败了。我该如何预防?当我尝试构建“ Spring”示例项目时,这是ACSLX的控制台输出。

##### Build starting...

C:\acslX\ShSysTime.exe
Current System Time 15:05:02
"C:\acslX\atrans.exe" -lic_path "C:\acslX\license.lic;C:\acslX\*.lic" -no_xsl -no_compile -no_link "C:\acslX\Examples\MODELD~1\SPRING~1\SPRING~2\spring.csl"
ACSL Translator
Copyright 2002-2015, AEgis Technologies Group, Inc.
All rights reserved.
--------------------------------------------------------
The license path is now: C:\acslX\license.lic;C:\acslX\*.lic
INFO: TRANSLATOR: Starting Translation...
INFO: ANALYZER: Sorting sections using DFS algorithm.
INFO: ANALYZER: Sorting performed in 0.001000 seconds.
INFO:  Translator completed successfully 
===================================

move "C:\acslX\Examples\MODELD~1\SPRING~1\SPRING~2\spring.xml" ".\spring.ail"
/Rtools/bin/sh: move: command not found
C:\acslX\mingw32\bin\make.exe: *** [spring.ail] Error 127
##### Build failed.

3 个答案:

答案 0 :(得分:2)

问题是Windows中没有外部命令“ move”。如果查看C:\ Windows \ system32目录(或Windows版本中的任何目录),会发现很多熟悉的Windows命令,例如XCOPY,HELP,SUBST等,但没有MOVE。难怪,sh找不到它。

您可以从DOS提示符下使用MOVE的原因是,这是CMD.EXE的内部命令。因此,您必须调用CMD才能使用MOVE,如下所示(未经测试!):

CMD /C MOVE "C:\acslX\Examples\MODELD~1\SPRING~1\SPRING~2\spring.xml" ".\spring.ail"

答案 1 :(得分:1)

我通过创建一个蝙蝠文件ACSLXLauncher.bat解决了这一问题,该文件在启动acslx.exe之前已从路径中删除了sh.exe位置:

Can I set an environment variable for an application using a shortcut in Windows?

Remove unwanted path name from %path% variable via batch

rem this is necessary because sh.exe in the path prevents ACSLX from working
@echo off
set PATH=%PATH:C:\Program Files\Git\bin;=%
set PATH=%PATH:C:\RTools\3.4\bin;=%
start "" "C:\acslX\acslx.exe"

我还创建了一个快捷方式来使用cmd /c C:\..\ACSLXLauncher.bat运行此bat文件,以便将其固定到任务栏上。

答案 2 :(得分:1)

另一种选择是随时准备一个.bat来设置PATH:

将其命名为senv.bat,并将其放入您当前的%PATH%

其中:

set PATH=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\
set PATH=C:\acslX;%PATH%
... other PATHs you might need

请不要在其中添加GitHub路径或R路径,以免发生任何冲突。

在需要执行ACSLX会话的任何CMD中,键入“ senv”:该会话将具有简化的PATH,仅包含您需要的内容。
无需重命名。

在该会话之外,您通常的当前PATH保持不变。


OP添加:

  

,我不在命令行中工作,我正在ACSLX GUI中工作,我认为我无法修改它在后台运行的脚本。

我回答:用正确的PATH启动ACSLX GUI。
这就是OP's answer implements