SORU
20 Mart 2009, Cuma


Maske bir giriş bat dosyasında metin edebilirim

Başka bir program çalıştırmak için bir toplu iş dosyası yazıyorum. Bu durumda bir şifre sormasını istiyorum. Giriş metni maskelemek için herhangi bir yolu var mı. Baskı yapmak istemiyorum***giriş karakter yerine karakter. Linux Parola istemi davranışı (yazarken Baskı yok) yeterli olacaktır.

@echo off
SET /P variable=Password : 
echo %variable%
Pause

Bu giriş ama yapamıyorum maske metni bu yaklaşımı kullanarak okur.

CEVAP
3 Aralık 2013, Salı


Evet - 4 yıl geç kaldım.

Ama harici bir komut; bir toplu iş dosyasından powershell komutları çağırarak oluşturmak zorunda kalmadan tek satırda bunu yapmak için bir yol buldum.

Anlaşılmaz hattına yakın bir yer son derece uzun,:

@echo off
powershell -Command $pword = read-host "Enter password" -AsSecureString ; $BSTR=[System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($pword) ; [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR) > .tmp.txt & set /p password=<.tmp.txt & del .tmp.txt
echo %password%

Bu kırarım - birkaç satır üzerinde şapka kullanarak bölebilirsiniz çok daha güzel olan ^,...

@echo off
powershell -Command $pword = read-host "Enter password" -AsSecureString ; ^
    $BSTR=[System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($pword) ; ^
        [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR) > .tmp.txt 
set /p password=<.tmp.txt & del .tmp.txt
echo %password%

This article açıklar ne powershell komutları yapıyor; aslında alır girişini kullanarak Read-Host -AsSecureString - aşağıdaki iki satır dönüştürmek bu güvenli dize geri içine düz metin çıktısı (düz metin parola) daha sonra gönderilen bir metin dosyası kullanarak >.tmp.txt. Bu dosya daha sonra bir değişken okuma ve silinir.

Ve teşekkür etmek TessellatingHeckler - çıkış için bir metin dosyası (set powershell komut bir değişken, çünkü çok dağınık uzun bir çizgi içinde bir döngü için), daha iyi bir yöntem.

Bu ikinci yöntemi kullanmanızı tavsiye ederim.

@echo off
set "psCommand=powershell -Command "$pword = read-host 'Enter Password' -AsSecureString ; ^
    $BSTR=[System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($pword); ^
        [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR)""
for /f "usebackq delims=" %%p in (`%psCommand%`) do set password=%%p
echo %password%

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • kimaliz

    kimaliz

    18 Temmuz 2006
  • RobertDuskin

    RobertDuskin

    12 HAZİRAN 2008
  • snookie77

    snookie77

    2 Mart 2006