Di Bash, aku bisa melakukannya EDITOR=vim command
dan command
akan dijalankan bersama EDITOR
mulai vim
, tetapi ini tidak akan memengaruhi nilai EDITOR
di shell itu sendiri. Apakah mungkin untuk melakukan ini di cmd.exe
?
sumber
Di Bash, aku bisa melakukannya EDITOR=vim command
dan command
akan dijalankan bersama EDITOR
mulai vim
, tetapi ini tidak akan memengaruhi nilai EDITOR
di shell itu sendiri. Apakah mungkin untuk melakukan ini di cmd.exe
?
Catat itu cmd /C "set "EDITOR=vim" && echo %EDITOR%"
tidak akan bekerja
Tidak akan cmd /C "setlocal ENABLEDELAYEDEXPANSION && set "EDITOR=vim" && echo !EDITOR!"
Apa yang akan /V
opsi, untuk mengaktifkan ekspansi variabel lingkungan tertunda menggunakan !
sebagai pembatas.
C:\> cmd /V /C "set EDITOR=vim&& echo !EDITOR!"
vim
Sebagai tercantum di bawah ini oleh maoizm , ini cmd /V /C
, tidak cmd /C /V
(yang akan tidak kerja)
Saya tidak dapat memikirkan alasan praktis apa pun yang pernah Anda inginkan sebenarnya dalam konteks satu perintah
Biasanya, Anda memerlukan ini ketika Anda harus mengganti nilai yang digunakan beberapa kali dalam baris perintah yang panjang.
Misalnya, untuk menggunakan file ke Nexus (dalam beberapa baris agar mudah dibaca):
cmd /v /c "set g=com.agroup&& set a=anArtifact&& set v=1.1.0&& \
mvn deploy:deploy-file -Dfile=C:\path\!a!-!v!.jar \
-Dpackaging=jar -DgroupId=!g! -DartifactId=!a! -Dversion=!v! \
-DrepositoryId=nexus
-Durl=http://myserver/nexus/content/repositories/my-repo/"
Alih-alih harus mengganti grup, artefak (digunakan 2 kali) dan versi di baris perintah yang panjang dan kompleks, Anda dapat mengeditnya di awal dari perintah tersebut. Lebih jelas / mudah untuk memanipulasi dan mengubah nilai parameter.
'vim'
tapi'vim '
di perintah terakhir. Tambahkan kutipan internal untuk menghindari ruang pada akhirnya.cmd /v /c "dir file1.txt >NUL 2>&1 & echo !ERRORLEVEL! & dir file2.txt >NUL 2>&1 & echo !ERRORLEVEL!"
cmd /v/c "..."
bekerja, tapicmd /c/v "..."
gagal - semoga bisa menghemat 15 menitAnda dapat melakukannya di windows seperti ini tidak perlu menginstal apa pun.
Anda akan melihat daftar variabel dan Anda akan melihat EDITOR = vim, sekarang jalankan "set" lagi dan itu tidak akan terdaftar.
Anda dapat melakukan banyak & amp; & amp; untuk menambahkan perintah tambahan:
EDIT: / C keluar cmd baru segera setelah berjalan, jika Anda menghasilkan output dengan yang baru itu akan tetap terlihat di jendela induk.
Anda dapat memilih untuk menggunakan / K dalam hal ini jendela cmd baru tetap terbuka di akhir proses.
sumber
set name=foo&&echo %name%
atauset username=foo&&echo %username%
?Anda dapat menggunakan util porting
env
dari paket CoreUtils di GnuWin32 http://gnuwin32.sourceforge.net/env.exe
ada dalam variabel% PATH%env EDITOR=vim command
sumber
Saya telah mengetuk file batch
env.cmd
yang bekerja kurang lebih seperti Linuxenv
perintah:-Satu-satunya perbedaan adalah, karena caranya
cmd
parses, penugasan lingkungan perlu dikutip, jadi perintah Anda adalah:File batch dapat diuraikan untuk menghapus pembatasan 8-parameter dengan membangun string perintah di dalam
for
loop (ekspansi yang tertunda akan diperlukan).sumber
%*
sebagai garis kedua dari belakang (yaitu, yang setelah:DoCmd
label) untuk memungkinkan perintah pengguna yang sangat lama?%*
adalah asli daftar parameter: tidak terpengaruh olehshift
(tidak seperti$*
di Unix).