Моя установка Windows DOS, кажется, повреждена способами, которые я не понимаю:
Переменная среды CD работает только при запуске cmd
с параметром /C
или /K
, в то время как если я использую пакет (что является моей целью) или стандартную страницу cmd, это не работает.
В дополнение к этому, у меня также есть проблема с командой start
: даже если мой путь правильный и файл есть, всякий раз, когда я использую параметр /max
или /wait
результат - program.exe
не найден, а если Я не использую никаких аргументов, которые он запускает нормально. Например, start "" /d "C:\Program_1.0\" /max /wait "Program1.0.exe"
приводит к тому, что программа не найдена.
Что может вызвать эти проблемы? Я схожу с ума здесь.
@ramhound, ты говоришь о переменной PATH
, я говорю о !CD!
переменная MS DOS.
Как пример:
@echo off
REM : ------------------------------------------------------------------
REM : main
chcp 1252
setlocal enabledelayedexpansion
@echo CURRENTDIR=!CD!
REM : parent directory of script
pushd "%~dp0" >NUL && set "WORKINGDIR="!CD!"" && popd >NUL
@echo WORKINGDIR=!WORKINGDIR!
pause
Здесь currentdir
и workingdir
будут иметь одинаковый вывод в любом месте, которое я использую для запуска этого скрипта.
@DavidPostill:
Спасибо, вы правы: при выполнении сценария из проводника Windows - или если вы запускаете командный файл в консоли, переходя к его родительской папке - сценарий DOS не меняет рабочий каталог. Но система ДОЛЖНА делать это при вызове скрипта из другого места (например, при использовании его полного пути из консоли по умолчанию в% USERPROFILE%). И это именно моя первая проблема: для меня это не так. Попробуйте сами, и вы получите CURRENTDIR =% USERPROFILE%, WORKINGDIR = parent_folder пакетного файла. И при вызове из% USERPROFILE% с помощью cmd /C вместо непосредственно командного файла это работает. Похоже, что отложенное расширение не работает, но я не понимаю, почему.