Cara mengatur Judul CMD ke Direktori kerja saat ini di Windows XP

18

Bagaimana cara menetapkan judul Command Prompt (CMD) pada Windows XP ke direktori kerja saat ini secara dinamis? Saya bisa menggunakan

title %CD%

Namun, ini adalah perbaikan sementara dan judul tetap diperbaiki ketika saya mengubah direktori menggunakan perintah CD.

Bayangan badai
sumber
Nah, apa yang terjadi ketika Anda menggunakan pushddengan salah satu makro?
Halo71

Jawaban:

20

Berhasil bekerja berkat makro doskey gravvity. Dia telah menggunakan && untuk menggabungkan perintah cd dan judul yang berfungsi dengan sempurna. Saya bahkan membuat memuat makro ini setiap kali saya menggunakan cmd dengan men-tweak registri.

1) Saya membuat file kelelawar bernama cmd_title.bat dan isinya

@echo off
title %cd%

2) Saya menempatkan file ini di drive C: (C: \ cmd_title.bat)

3) Buat file batch lain yang disebut cmd.bat di drive C: dengan konten berikut

doskey cd = cd /d $* ^&^& "C:\cmd_title.bat"
title %cd%

(flag / d adalah untuk menggunakan cd untuk beralih ke drive lain).

4) Lalu kita buka regedit dan buka HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Command Processor . Di sini ada kunci yang disebut AutoRun . Kami memodifikasi nilai kunci ini dan mengaturnya ke lokasi file cmd.bat dalam tanda kutip (misalnya: "C: \ cmd.bat").

Sekarang cd berfungsi seperti yang kita inginkan setiap kali kita membuka cmd.

Pada dasarnya && digunakan untuk chaining perintah di Windows

Bayangan badai
sumber
Keren, saya punya solusi untuk bekerja. Tetapi saya kehilangan fungsionalitas "tombol tab tekan, kecocokan otomatis" saya.
rok2791SWTS
Anda mungkin telah mengganggu nilai CompletionChar / PathCompletionChar di HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Command Processor kunci dalam registri. Untuk mengatur menggunakan tombol tab untuk pelengkapan otomatis, Anda perlu mengatur nilai CompletionChar dan PathCompletionChar ke 0x9 (hex)
Stormshadow
+1 ini adalah solusi yang berfungsi, tetapi dengan koreksi kecil: AutoRun bukan kunci, tetapi nilai tipe string.
mloskot
1
Solusi bagus! Anda juga bisa melakukannya tanpa cmd_title.bat jika Anda mengetik makro seperti ini sebagai gantinya:doskey cd=@echo off$Tcd /d $*$T@title ^%cd^%$Techo on
Superole
1
Saya menemukan @echo offtidak perlu jika Anda hanya menambahkan @di depan perintah yang tidak ingin Anda gema. Saya juga menemukan perintah ini lebih berguna untuk mengatur judul hanya nama direktori saat ini daripada path lengkap@for %%* in (.) do @title %%~nx*
Bron Davies
5

Saya pikir pushd dan popd jauh lebih berguna daripada cd, dan akan melihat lebih banyak digunakan jika mereka lebih cepat mengetik. Saya telah menyelesaikan masalah judul cd vs pushd / popd dan konsol jendela dengan skrip berikut, yang saya sebut d.bat, yang ada di jalur saya.

@ echo off
rem d.bat replaces CD, PUSHD, and POPD with one command that also changes the title
rem of the console window to tell the current directory. Invoked with no arg, the
rem title is updated. Use this after changing the directory by some other means.
rem The argument / invokes popd. Any other argument invokes pushd with that arg.

if not _%1 == _ ( 
    if _%1 == _/ (
        popd
    ) else (
        pushd %*
    )
)
title %CD%
David McCracken
sumber
2

Anda dapat mengubah judul Command Prompt dengan menggunakan titleperintah.

Anda dapat membuat file batch (mis. Mycd.bat) yang berisi:

title "%1"
cd  "%1"

dan gunakan itu sebagai ganti "cd":

mycd "newdir"

Anda juga dapat meletakkan file .bat di system32 jika Anda ingin selalu tersedia.

harrymc
sumber
4
Menggunakan makro akan menjadi pilihan yang lebih baik:doskey cd=cd $* ^&^& title $*
grawity
@ kegembiraan: Ide bagus.
harrymc
1

Anda tidak bisa, setidaknya tidak dengan shell Windows.


Ini mungkin menjadi mungkin untuk menambahkan "set Xterm judul" escape sequence untuk %PROMPT%, tetapi Anda akan membutuhkan emulator yang berbeda terminal (mungkin PuTTYcyg atau sesuatu dari SFU), sebagai Windows Console tidak mendukung escape sequence.

Atau, cari shell lain yang dapat menggunakan fungsi konsol Windows untuk mengatur judul.


Ini sering bingung dalam konteks Windows, jadi ...

shell membaca dan menafsirkan input; cmd.exe, command.com,/bin/sh

terminal , terminal emulator , konsol menampilkan program berbasis teks (termasuk shell) di layar Anda; Windows Console, xterm,PuTTYcyg

grawity
sumber
sebenarnya, cmd.exe adalah terminal. penjelajah adalah sebuah shell.
Benteng
1
@Idigas: exploreradalah shell GUI, cmd.exeadalah berbasis teks. (Pikirkan tentang hal ini: cmd.exesama dengan /bin/shdi Unix, dan /bin/shselalu disebut "shell". Demikian pula, Konsol Windows setara dengan "terminal emulator" di X11.)
grawity
Saya berdiri dikoreksi.
Benteng
1

Dengan asumsi \ tools ada di path, dan di situlah Anda menyimpan file batch Anda:

copy con: \tools\titlecmd.txt

title ^Z

copy con: \tools\cdtitle.bat

cd>\tools\cd.txt

copy \tools\titlecmd.txt+\tools\cd.txt cdtitletmp.bat

call cdtitletmp

^Z

Anda sekarang memiliki cdtitle.batyang dapat Anda hubungi dari file batch lain.

daveand
sumber
1

Buat file: cd.bat dan letakkan yang berikut di sana:

cd %*  
title %CD%  

Kemudian terbitkan perintah ini:

doskey cd=...\cd.bat $*  

Ganti "..." dengan path ke cd.bat. Cobalah dan lihat apakah itu berhasil.

Untuk membuat is-permanen itu, buat dosrc.cmd, masukkan perintah doskey itu di sana, lalu buat pintasan cmd, klik kanan padanya dan pilih properti.

Ubah Target menjadi:

%windir%\system32\cmd.exe /K ...\dosrc.cmd  

Sekali lagi, ganti "..." dengan path ke dosrc.cmd

Kemudian klik dua kali pada pintasan, Anda harus memiliki fungsionalitas cd.

Mauro
sumber