Aktualizacja - lepsza wersja 18 lipca 2019 r.
Ostateczne podsumowanie, mimo że mimo wszystko przeszedłem do PowerShell dla większości konsol Windows, ale postanowiłem zakończyć ten stary problem cmd, musiałem dziś dostać się na konsolę cmd i brak tej funkcji naprawdę mnie uderzył. Ten wreszcie działa również ze spacjami, w których moja poprzednia odpowiedź zawiodłaby.
Ponadto ten teraz może także używać ~ jako prefiksu dla innych domowych podfolderów, a także zamienia ukośniki na ukośniki. Więc oto jest;
Krok 1. Utwórz te makra doskey , gdzieś będą pobierane przy każdym uruchomieniu cmd.
DOSKEY cd=cdtilde.bat $*
DOSKEY cd~=chdir /D "%USERPROFILE%"
DOSKEY cd..=chdir ..
Krok 2. Utwórz plik cdtilde.bat i umieść go gdzieś w ŚCIEŻCE
@echo off
set dirname=""
set dirname=%*
set orig_dirname=%*
:: remove quotes - will re-attach later.
set dirname=%dirname:\"=%
set dirname=%dirname:/"=%
set dirname=%dirname:"=%
:: restore dirnames that contained only "/"
if "%dirname%"=="" set dirname=%orig_dirname:"=%
:: strip trailing slash, if longer than 3
if defined dirname if NOT "%dirname:~3%"=="" (
if "%dirname:~-1%"=="\" set dirname="%dirname:~0,-1%"
if "%dirname:~-1%"=="/" set dirname="%dirname:~0,-1%"
)
set dirname=%dirname:"=%
:: if starts with ~, then replace ~ with userprofile path
if %dirname:~0,1%==~ (
set dirname="%USERPROFILE%%dirname:~1%"
)
set dirname=%dirname:"=%
:: replace forward-slashes with back-slashes
set dirname="%dirname:/=\%"
set dirname=%dirname:"=%
chdir /D "%dirname%"
Testowane dobrze z;
cd ~ (traditional habit)
cd~ (shorthand version)
cd.. (shorthand for going up..)
cd / (eg, root of C:)
cd ~/.config (eg, the .config folder under my home folder)
cd /Program Files (eg, "C:\Program Files")
cd C:/Program Files (eg, "C:\Program Files")
cd \Program Files (eg, "C:\Program Files")
cd C:\Program Files (eg, "C:\Program Files")
cd "C:\Program Files (eg, "C:\Program Files")
cd "C:\Program Files" (eg, "C:\Program Files")
Och, pozwala także na leniwe cytowanie, co uważam za przydatne, nawet gdy w nazwach ścieżek folderów znajdują się spacje, ponieważ zawija wszystkie argumenty tak, jakby to był jeden długi ciąg. Co oznacza, że działa tylko wstępna wycena lub działa całkowicie bez cytatów.
Wszystkie inne rzeczy poniżej można teraz zignorować, pozostawiają to z powodów historycznych - więc nie popełniam ponownie tych samych błędów
stara aktualizacja 19 października 2018 r.
W przypadku gdyby ktoś inny wypróbował moje podejście, moja pierwotna odpowiedź poniżej nie obsługiwała spacji, np. następujące nie powiodło się.
> cd "c:\Program Files"
Files""]==["~"] was unexpected at this time.
Myślę, że musi być sposób na rozwiązanie tego. Opublikuje ponownie, jeśli mogę poprawić swoją odpowiedź. (patrz wyżej, w końcu wszystko działało tak, jak chciałem).
Moja oryginalna odpowiedź, wciąż potrzebowałem pracy ... 7 października 2018.
Właśnie próbowałem to zrobić dzisiaj i myślę, że dostałem, tak myślę, że to działa dobrze;
Po pierwsze, niektóre makra doskey ;
DOSKEY cd=cdtilde.bat $*
DOSKEY cd~=chdir /D "%USERPROFILE%"
DOSKEY cd..=chdir ..
a potem plik nietoperza na mojej ścieżce;
cdtilde.bat
@echo off
if ["%1"]==["~"] (
chdir /D "%USERPROFILE%"
) else (
chdir /D %*
)
Wszystko to wydaje się działać dobrze;
cd ~ (traditional habit)
cd~ (shorthand version)
cd.. (shorthand for going up..)