【问题标题】:sh.exe is preventing windows cmd move command from workingsh.exe 阻止 windows cmd move 命令工作
【发布时间】:2019-01-27 04:39:06
【问题描述】:

我正在运行一个名为 ACSLX 的旧应用程序。它正在尝试调用 DOS 移动命令,但因为 sh.exe 在我的路径中,所以我收到错误消息。 sh.exeGitRTools 的一部分,我已经安装了这两者。如您所见,它只是试图移动文件,但这失败了。我怎样才能防止这种情况?这是我尝试构建“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.

【问题讨论】:

    标签: git shell sh acsl rtools


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      另一种选择是准备一个小 .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 中工作,我认为我无法修改它在后台运行的脚本。

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

      【讨论】:

      • 问题是,我不在命令行中工作,我在 ACSLX GUI 中工作,我认为我无法修改它在后台运行的脚本。
      • @SimonWoodward 不能使用正确的 PATH 启动 ACSLX GUI 吗?
      【解决方案3】:

      我通过创建一个 bat 文件 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 文件,以便我可以将它固定到任务栏。

      【讨论】:

      • 很好地说明了我的建议。 +1。不过我还是看到了你的评论;)
      猜你喜欢
      • 2018-01-16
      • 1970-01-01
      • 1970-01-01
      • 2013-07-18
      • 2011-08-11
      • 1970-01-01
      • 1970-01-01
      • 2015-12-27
      • 2016-06-09
      相关资源
      最近更新 更多