Я хотел бы получить командную строку cmd, которая отображает сетевой каталог на локальный путь, а затем добавляет этот локальный путь к (локальной) переменной PATH.
Я подготовил этот вид сценария .bat, который работает, как и ожидалось:
pushd \\NetworkPath\Users\myname\Downloads
chdir
SET CurrentDir="%~dp0"
SET var=%cd% & SET CDIR=`chdir`
for /f "usebackq" %%x in (`chdir`) do set bvar=%%x
SET PATH=%PATH%;%bvar%
@echo IT IS: %CurrentDir%, %var%, %CDIR%, %bvar% ;;; %PATH% ---  %CD%
По сути, это сценарий, который я хотел бы запустить при запуске нового cmd.exe при запуске файла .bat . Проблема в том, что когда сетевой путь "смонтирован" (например, когда вызывается pushd), он всегда получает новую и другую букву локального диска (X:, Y:, Z: ...), поэтому я должен определить, что этот эквивалент пути локального диска (например, через chdir), прежде чем я могу добавить его в PATH для этого сеанса; а также, я озадачен, почему SET PATH=%PATH%;%bvar% всегда удваивает точку с запятой ; до приложенном части, когда конечный сцепляются PATH echo - е изд. 
Я узнал, что знак процента % экранируется путем удвоения его (%%); этот амперсанд & является разделителем для объединения нескольких строк кода в одну строку, которая экранируется с помощью символа ^ , но я все еще озадачен, поскольку двойные кавычки " словно заканчиваются дословно в переменных через SET или вне echo ; также кажется, что команда for всегда выполняется (и я не могу избежать ее с помощью символа вставки) - даже если она является частью оператора переменной SET. 
В конечном счете, я не могу преобразовать этот скрипт в однострочник, поэтому я могу использовать его в качестве аргумента для start.exe качестве команд запуска; обратите внимание, что я не хотел бы иметь два командных файла, я хотел бы иметь только один. Я хотел бы сначала сохранить этот скрипт в переменной, чтобы я мог повторить его для отладки - и вот как далеко я получил:
SET TCMD="" pushd \\NetworkPath\Users\myname\Downloads ^& chdir ^& SET CurrentDir="%%~dp0" ^& SET var=^%%cd^%% ^& SET CDIR=^(`chdir`) ^& SET PATH=%%PATH%%;%%CD%% ^& echo %%CurrentDir%%, %%var%%, %%CDIR%%, %%bvar%% ;;; %%PATH%% ---  %%CD%% ""
echo %TCMD%
start cmd.exe /k "%TCMD%"
Проблема - новый cmd.exe начинается с:
'""' is not recognized as an internal or external command,
operable program or batch file.
Затем %CD% ссылается на предыдущий каталог (из которого был запущен скрипт .bat), а не на новый.
Ни один из них не извлекает новое имя диска / пути при запуске таким образом - за исключением, может быть, for /f "usebackq" %%x in (`chdir`) , который я не могу действительно записать (я вижу его вывод), и не Кажется, что все также соответствует (иногда кажется, что отчеты пустые).
Как я могу получить мой первый скрипт, чтобы он мог служить однострочным в аргументе start моего второго скрипта, чтобы я мог запустить терминал cmd.exe как предполагалось?
Рекомендации:
- http://ss64.com/nt/syntax-esc.html
- https://stackoverflow.com/questions/9546324/adding-directory-to-path-environment-variable-in-windows
- Можете ли вы просмотреть путь UNC, используя среду командной строки, не сопоставляя его с сетевым диском?
- Пакетный файл, который запускает cmd.exe, команду, а затем остается открытым по приглашению
- Выполнить несколько команд с 1 строкой в командной строке Windows?
