Если эта команда действительно существует и работает
Хм, да, это существует и работает.
Если он имеет такую же функциональность (смени каталог)
Да; Да, это так. Это не означает, что кто-то не может просто создать программу (например, cd.exe
), которая делает что-то еще, но обычно это команда, встроенная в оболочку и изменяющая текущий каталог.
Если есть какие-либо проблемы с его использованием
Какие проблемы? .
и ..
, его синтаксис довольно прост. Единственная сложность - при смене текущего каталога на других томах (буквах дисков). Кроме того, расширения команд в Windows немного расширяют его использование, но ничего такого, что могло бы вызвать реальные проблемы.
Если в какой-либо ОС есть другая команда командной строки, которая делает то же самое лучше / более тщательно / более свободно используемым способом.
На самом деле, нет. Могут быть и другие команды, но cd
хорош и короток и делает свое дело. Помимо изменения текущего диска в дополнение к каталогу (например, cd /d t:\blah
), как именно можно улучшить изменение текущего каталога?
Это не совсем по теме (хотя и связано), но, видимо, некоторые люди не могут смириться с тем, что команда CD
не обязательно должна быть встроена в оболочку. Дело в том, что это не так ; это может быть внешняя программа. Некоторые операционные системы облегчают это, другие затрудняют, а некоторые даже делают невозможным, но факт в том, что он может быть внешним и не всегда должен быть встроен, как некоторые заставили бы вас верить. Например, в 32-разрядных версиях Windows, включая XP и 7, вы можете использовать тот факт, что консольная подсистема (то есть, как программы текстового режима поддерживаются и запускаются в Windows) поддерживает старое прерывание «DOS» 0x21— да, даже в cmd
, а не просто `команда. (Это не будет работать в 64-битных версиях Windows, потому что они потеряли много обратной совместимости.)
Например, вы можете сохранить нижеприведенный скрипт отладки как c.scr
и скомпилировать его, запустив debug < c.scr
из командной строки. Он создаст файл .com
который вы можете использовать для изменения текущего каталога.
a
mov si,82
mov dl,[si]
or dl,20
sub dl,61
mov ah,e
int 21
mov dl,[si]
cmp dl,d
jz 119
inc si
jmp 10f
xor dl,dl
mov [si],dl
mov dx,82
mov ah,3b
int 21
mov ah,4c
int 21
n c.com
rcx
28
w
q
(Обратите внимание, что он не поддерживает длинные имена файлов, поэтому вам нужно будет использовать версию 8.3 . Он также меняет текущий диск, так что вы можете изменить каталог на другой диск за один ход, но он делает это очень простым способом и не выполняет никакой проверки ошибок, поэтому пытается перейти в каталог, который начинается с Буква, для которой существует диск, работать не будет. То есть c c:\windows
будет работать так же, как c \windows
, но c asd
не будет работать, если у вас есть диск A:
если только в нем не содержится каталог с именем asd
. Вы можете расширить его и добавить проверку ошибок и тому подобное, если хотите, но это доказывает мою точку зрения о возможности того, чтобы cd
был внешним в Windows.)
Вы также можете сохранить следующую программу Pascal (например, как c.pas
) и скомпилировать ее с помощью Turbo Pascal или GO32-версии компилятора FreePascal (32-разрядная версия не будет работать, поскольку она использует обычный Windows API):
program cd;
begin
chdir(paramstr(1));
end.
Опять же, просто запустите его, чтобы изменить текущий каталог (например, `c.exe" c:\program files "- да, длинные foldernames будут работать, но будут автоматически преобразованы в имена 8.3 после выполнения).