У Raymond Chen есть несколько идей:
https://devblogs.microsoft.com/oldnewthing/20050128-00/? p=36573
, Заключенный в кавычки здесь полностью, потому что архивы MSDN склонны быть несколько ненадежными:
простой способ состоит в том, чтобы использовать
%CD%
псевдопеременный. Это расширяется до текущего рабочего каталога.
set OLDDIR=%CD%
.. do stuff ..
chdir /d %OLDDIR% &rem restore current directory
(Конечно, каталог, save/restore, возможно, более легко был сделан с
pushd
/popd
, но это не точка здесь.)Эти
%CD%
прием удобен даже из командной строки. Например, я часто оказываюсь в каталоге, где существует файл, на который я хочу воздействовать, но... о, мне нужно к chdir к некоторому другому каталогу для выполнения той операции.
set _=%CD%\curfile.txt
cd ... some other directory ...
somecommand args %_% args
(мне нравится использовать
%_%
в качестве моей переменной среды царапины.)Тип
SET /?
для наблюдения других псевдопеременных, обеспеченных командным процессором.
Также комментарии в статье определенно стоят просканировать, например, этого (с помощью Wayback Machine, так как комментариев не стало от более старых статей):
http://blogs.msdn.com/oldnewthing/archive/2005/01/28/362565.aspx#362741
Это покрывает использование % ~dp0:
, Если Вы хотите знать, где пакетный файл живет:
%~dp0
%0
название пакетного файла.~dp
дает Вам диск и путь указанного аргумента.
У меня была такая же проблема с Blend 2 на Windows Vista 64.
Обычно я компилирую свое решение в VS2008 с целью «Отладка - x86» для всех моих проектов, поэтому что он совместим с некоторыми другими 32-битными проектами.
Похоже, Blend любит цели «Отладка - любой процессор». Я в основном изменил свой диспетчер конфигурации так, чтобы он нацелен на любые платформы ЦП вместо x86.
Итак ...
Я сделал противоположное, чтобы проверить, действительно ли это так, и кажется, что да ... Я просто вернул изменения решения обратно на Debug - x86, очистил все и перекомпилировал, и я все еще вернулся с ошибкой «Не существует [...]»
Насчет «Почему?» ... не знаю, но по крайней мере теперь работает!