Secara otomatis menjalankan perintah ketika prompt perintah dibuka

21

Saya mencari cara untuk menjalankan beberapa perintah konsol secara otomatis ketika command-prompt dibuka di Windows, khusus untuk mengatur beberapa alias perintah.

Sebagai contoh, ketika prompt perintah dibuka, saya ingin perintah seperti berikut ini dijalankan secara otomatis sehingga saya dapat menggunakan lssebagai gantinya dir.

doskey ls=dir

Bagaimana ini bisa dilakukan?

Daniel Williams
sumber
3
Windows XP tidak memiliki DOS.
user1686
@Kontontau, interessant. Jadi itu akan menjadi alasan agar batch saya tidak menyimpan subtiskey setelah perintah "mulai / pisahkan", tetapi hanya dengan "cmd / k" atau "cmd / c" ...
kokbira
apakah kita harus mengubah judul pertanyaan atau tidak setelah edisi "Klarifikasi"?
kokbira
1
@KCotreau: Secara teknis, ini adalah bagian dari subsistem Win32, tidak spesifik untuk cmd.exe.
user1686

Jawaban:

9

Jika Anda ingin memuatnya saat bootup, daripada ketika Anda masuk, jika Anda memiliki XP Pro (XP home tidak menyertakan gpedit.msc), lakukan ini:

Mulai> Jalankan> gpedit.msc

dan tekan enter. Kemudian jalankan gpupdate / force dari baris perintah.

Pergi ke

Konfigurasi Komputer> Pengaturan Windows> Skrip> Startup

dan tambahkan lokasi ke skrip.

Anda juga dapat melakukan ini untuk masuk pengguna di bawah

Konfigurasi Pengguna> Pengaturan Windows> Skrip> Startup

Jika Anda memiliki XP Home, Anda dapat menyalin skrip ke:

C: \ Windows \ System32 \ GroupPolicy \ Machine \ Scripts \ Startup

untuk memuatnya saat boot, atau:

C: \ Windows \ System32 \ GroupPolicy \ User \ Scripts \ Logon

untuk memuatnya untuk pengguna saat masuk. Folder GroupPolicy disembunyikan.

KCotreau
sumber
1
Saya lebih suka metode ini daripada meletakkannya di folder startup. Buat lebih permenant.
Joe Taylor
1
@ Joe Taylor, Terima kasih. Sejujurnya, saya hanya menggunakan folder Startup untuk hal-hal seperti memulai Outlook. Ini adalah cara yang lebih standar untuk melakukannya dari sudut pandang sistem administrasi.
KCotreau
@KContreau, solusi Anda sangat berguna, tetapi tidak untuk kasus itu. Saya diuji tetapi tidak berfungsi untuk perintah substitusi doskey ...
kokbira
@ kbbira Pertanyaan aslinya adalah "Bagaimana menjalankan skrip saat startup di XP?", yang saya pikir saya jawab dengan akurat. Dia mengedit dan menambahkan bagian "misalnya, dan doskey ls = dir" setelahnya.
KCotreau
1
@Kontontau, Anda benar, masalahnya adalah bahwa judul pertanyaan ini tidak benar. Dalam "Klarifikasi" dia berkata bahwa dia ingin "untuk menjalankan beberapa perintah DOS ketika saya memulai prompt DOS, terutama untuk mengatur beberapa alias ". Untuk melakukan beberapa perintah ketika Windows mulai, solusi Anda baik-baik saja, tetapi untuk menjalankan alias tidak.
kokbira
47

Alias ​​perintah khusus untuk jendela konsol tempat Anda mengonfigurasikannya, oleh karena itu skrip startup tidak akan berfungsi. Anda bisa melakukannya dengan cara ini:

  1. Buat file batch ( .cmd) dengan perintah doskey Anda , letakkan di suatu tempat di Data Aplikasi.

  2. Konfigurasikan untuk memulai secara otomatis setiap kali Anda membuka cmd . Pengaturan ada di Registry:

    • kunci: HKCU\SOFTWARE\Microsoft\Command Processor
    • nilai: AutoRun
    • ketik: REG_EXPAND_SZ
    • data: "%AppData%\aliases.cmd"
pengguna1686
sumber
1
Ini adalah solusi yang bagus untuk Win2K Virtual OS di mana saya ingin command prompt untuk selalu memuat jalur kompiler saya. Satu-satunya perbedaan adalah penggunaan REG_SZ bukan REG_EXPAND_SZ
James
Ini solusi yang bagus. Secara kebetulan, apakah ada cara untuk menekan output awal?
nburr
1
@Nickolas: Hanya mengarahkan perintah ke NUL seperti biasa?
user1686
Ini berfungsi dengan baik NAMUN itu dapat mengganggu kompiler sumber daya Windows (rc.exe) menyebabkan kesalahan seperti "Sistem tidak dapat menemukan jalur yang ditentukan." Lihat proyek Visual Studio Shell Terisolasi tidak dikompilasi .
User5910
Saya memperbaikinya dengan menetapkan memeriksa keberadaan file terlebih dahulu:if exist "%AppData%\aliases.cmd" "%AppData%\aliases.cmd"
User5910
4

Penerjemah perintah yang berbeda menangani alias perintah dengan cara yang berbeda.

CMD Microsoft mengandalkan subsistem konsol Win32 untuk menyediakan mekanisme perintah aliasing. The doskeyperintah benar-benar berinteraksi dengan proses konsol, dan itu adalah konsol itu sendiri yang memegang alias. Jadi alias adalah per-konsol dan sementara.

TCC / LE Perangkat Lunak JP menangani alias sendiri. The aliasperintah memungkinkan seseorang untuk melihat dan memanipulasi alias, yang baik "lokal" atau "global". Alias ​​masih bersifat sementara, tetapi bersifat pribadi untuk satu proses juru bahasa perintah atau dibagikan di antara semua proses juru bahasa perintah (di semua konsol).

Kerang seperti kerang Korn di toolkit utilitas SFUA - yang alatnya berjalan di Subsistem untuk Aplikasi berbasis UNIX yang muncul di sana di dalam kotak dengan Windows 7 Ultimate edition dan Windows Server 2008 R2 (Untuk Windows XP, orang dapat mengunduh dan menginstal Layanan untuk UNIX versi 3.5 .) - dan shell Bourne Again dari cygwin juga menangani alias sendiri. Alias ​​bersifat sementara, dan per proses interpreter perintah.

Memuat secara otomatis set alias awal awal juga bervariasi menurut penerjemah perintah.

Dalam semua kasus, seseorang menempatkan perintah untuk mengatur alias dalam suatu skrip.

grawitytelah memberikan salah satu dari dua kunci registri yang menyebabkan CMD Microsoft menjalankan perintah saat dijalankan . Sayangnya, ini adalah proses per perintah interpreter, meskipun alias itu sendiri disimpan per konsol . Mulai penerjemah perintah sekunder dari yang awal, dan setiap perubahan manual ke alias default akan diatur ulang. Alternatif, yang setidaknya melakukan inisialisasi hanya sekali per konsol, adalah dengan menambahkan /Kopsi dan nama skrip perintah yang memanggil doskeyke ekor perintah di pintasan yang memulai juru bahasa perintah.

TCC / LE Perangkat Lunak JP secara otomatis menjalankan TCSTARTskrip pada saat startup. Sekali lagi, ini adalah per proses penerjemah perintah. Namun, alias "lokal" TCC juga merupakan proses penerjemah per perintah, jadi ini adalah tempat yang tepat untuk menginisialisasi alias jika seseorang menggunakan alias lokal. Untuk alias global, hanya membuat shortcut di Anda Startupfolder yang beban alias dari sebuah file (dengan alias /r) dan kemudian berjalan dengan shraliasperintah agar mereka bertahan setelah shortcut yang memiliki selesai berjalan.

Untuk cangkang Bourne Again dan Korn, cukup lakukan seperti orang dengan cangkang ini di platform lain. Gunakan aliasperintah dalam $HOME/.profiledan $HOME/.bashrcskrip untuk shell Bourne Again; dan gunakan aliasperintah dalam $HOME/.profile, ENV, dan $HOME/.kshrcskrip untuk shell Korn.

JdeBP
sumber
2

Jawaban Gravity sangat membantu saya.

Saya membuat skrip shell-aliases.cmd di folder Documents saya (Suatu tempat saya bisa menemukannya nanti).

Kemudian buat Nilai String yang Dapat Diperluas 'AutoRun' di kunci registri:

'HKEY_CURRENT_USER \ Software \ Microsoft \ Command Processor'

Tetapkan nilai ke path lengkap ke file alias (Milik saya di 'C: \ Users \ Lee \ Documents \ shell-aliases.cmd').

Setelah saya memuat kembali prompt perintah alias doskey saya bekerja. Plus file alias saya mudah diakses dan siap diedit karena saya pikir lebih banyak untuk ditambahkan.

le8oi
sumber
0

Ada beberapa lokasi yang akan dilakukan, tetapi menu mulai> folder pembuka mungkin adalah yang termudah.

Jalankan 'msconfig' dan lihat program apa yang memulai, dan mengapa. Anda bisa menambahkan program Anda ke salah satu daftar itu (misalnya, dalam registri).

Konerak
sumber
0

Masalahnya di sini adalah jika Anda melakukannya di startup, pergantian ini hanya akan tersedia di CMD prompt yang dibuka. Jika ditutup, semua pergantian ini akan hilang dan harus dilakukan lagi untuk setiap command prompt yang dibuka.

Jadi, beberapa cara alternatif (Anda dapat menggabungkannya):

I. Buat kumpulan dan pintasan:

  1. Buat batch dengan makro ini dan simpan ke tempat yang diketahui (mis. C: \ apps \ mycmd.bat).
  2. Buat pintasan di desktop (atau di tempat yang Anda inginkan) dengan meletakkan "cmd / k" di depannya (mis. "Cmd /kc:\apps\mycmd.bat").
  3. Jadi semua perintah Anda akan dijalankan setiap kali Anda membuka pintasan itu.

II Buat kumpulan dan entri dalam variabel lingkungan PATH:

  1. Buat batch dengan makro ini dan simpan ke tempat yang diketahui (mis. C: \ apps \ mycmd.bat).
  2. Buka Panel kontrol> Sistem> Konfigurasi lanjutan> Lanjutan> Variabel lingkungan.
  3. Di entri Pengguna atau Sistem, cari variabel bernama PATH. Klik dua kali padanya dan, pada akhirnya, masukkan ";" dan jalur ke BAT Anda (mis. "c: \ apps \" => "before_string; c: \ apps \"), lalu Ok dan Ok.
  4. Jadi ketika Anda menggunakan cmd (atau dalam file BAT), cukup masukkan nama BAT di jalur yang dibuat (mis. "C: \ apps") untuk menjalankan perintah Anda (mis. Ketik "myapps" untuk menjalankan perintah substitusi itu).
kokbira
sumber
1
Saya mencoba "start / terpisah" tetapi hanya menyimpan variabel lingkungan (bukan substitusi dari perintah doskey) ... Perintah "set" juga berlaku untuk prompt yang dibuka saja, tetapi kita dapat menggunakan "setx" untuk menyimpannya ke sistem atau variabel lingkungan pengguna "selamanya". Saya tidak tahu apakah ada cara untuk menyimpan pengganti doskey "selamanya" ke sistem atau untuk setiap startup Windows. Saya lebih suka menggunakan cara saya ...
kokbira