我正在运行一个名为ACSLX
的旧应用程序。它正在尝试调用DOS移动命令,但是由于sh.exe
在我的路径中,因此出现错误。 sh.exe
是Git
的一部分,也是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.
答案 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。