Я запускаю старое приложение под названием ACSLX. Он пытается вызвать команду перемещения DOS, но поскольку sh.exe находится на моем пути, я получаю сообщение об ошибке. sh.exe является частью Git, а также RTools, оба из которых я установил. Как видите, он просто пытается переместить файл, но это не удается. Как я могу предотвратить это? Это консольный вывод ACSLX, когда я пытаюсь собрать пример проекта "Spring".
##### 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.





Я решил это, создав bat-файл ACSLXLauncher.bat, который удалил местоположения sh.exe из пути до запуска acslx.exe:
Могу ли я установить переменную среды для приложения с помощью ярлыка в Windows?
Удалите нежелательное имя пути из переменной% path% с помощью пакета
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"
Я также создал ярлык для запуска этого файла bat с помощью cmd /c C:\..\ACSLXLauncher.bat, чтобы я мог закрепить его на панели задач.
Другой вариант - иметь небольшой .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, чтобы избежать конфликта.
В любом CMD, где вам нужно выполнить сеанс ACSLX, введите «senv»: этот сеанс будет иметь упрощенный PATH с только тем, что вам нужно. Не нужно ничего переименовывать.
Вне этого сеанса ваш обычный текущий PATH остается неизменным.
ОП добавляет:
, I am not working in the command line, I am working in the ACSLX GUI, I don't think I can modify the scripts it is running in the background.
На что я ответил: графический интерфейс ACSLX должен быть запущен с правильным PATH.
Вот что такое Ответ OP реализует.
Проблема в том, что я не работаю в командной строке, я работаю в графическом интерфейсе ACSLX, я не думаю, что могу изменить скрипты, которые он запускает в фоновом режиме.
@SimonWoodward Не удалось запустить графический интерфейс ACSLX с правильным ПУТЬом?
Проблема в том, что в Windows нет внешней команды "переместить". Если вы посмотрите в свой каталог C: \ Windows \ system32 (или как там он называется в вашей версии Windows), вы найдете множество знакомых команд Windows, таких как XCOPY, HELP, SUBST и т. д., Но не MOVE. Неудивительно, что это дерьмо не может его найти.
Причина, по которой вы можете использовать MOVE из командной строки DOS, заключается в том, что это внутренняя команда CMD.EXE. Следовательно, вы должны вызвать CMD, чтобы использовать MOVE, что-то вроде этого (непроверено!):
CMD /C MOVE "C:\acslX\Examples\MODELD~1\SPRING~1\SPRING~2\spring.xml" ".\spring.ail"
Хорошая иллюстрация моего предложения. +1. Я все же видел ваш комментарий;)