Это абсолютно не странно, cmd.exe запускается с текущим каталогом windows\system32 - если самому не указать другой.
Ну вот я жму Win-R, пишу
cmd — и получаю в промпте
C:\Users\123.
-- Ср апр 12, 2017 16:56:37 --Где запустите, там и запускается.
Хм, вот да, действительно, чем
cmd хуже других программ — она тоже должна наследовать текущий каталог. Другое дело, что она могла бы не отождествлять текущий каталог своего процесса с текущим каталогом, используемым для команд. Но, видимо, этого не делает.
SinoidЕсли вы напишете просто
.., вы перейдёте вверх из текущего каталога, который пока что
%SystemRoot%, и попадёте в
%WinDir% (в вашем случае
C:\Windows). Можно использовать то, что аргументом
%0 передаётся путь к самому батнику, и использовать
Потому приходилось писать в некоторых скриптах, рассчитанных на "набрасывание" файла на них перетаскиванием, в самом начале
SET source_path=%~dp1
cd /d "%source_path%"
заменив здесь
1 на
0. Можно также (я проверил сейчас) сразу написать
cd /d "%~dp0" без введения переменной.
-- Ср апр 12, 2017 16:59:41 --Кстати, по поводу вот таких штук с аргументами, которые лично мне мало где удавалось найти, есть неплохой справочник
https://ss64.com/nt/syntax.htmlи вообще
https://ss64.com/nt/