Bir toplu iş dosyasında konsoldan girdi nasıl okunur?


82

Bir toplu iş dosyasında konsoldan girişi nasıl okuyabilirim? C'deki scanf işlevini başarmaya çalıştığım şey aynısını bir toplu iş dosyasında nasıl yapabilirim?



@ Raymond: Hayır, soru klavyeden bir değişkene dizge olarak birden çok karakteri okumaktır.
Nohsib

Komut set /p, ister bir harf ister birden çok harf olsun, kullanıcı ne yazarsa onu okur.
Raymond Chen

@ Raymond: Bunun üzerine bir kod parçacığı paylaşabilir
misin

Yanıtlar:


141

Bağlantılı önerilen kopyadaki kod parçacığı, kullanıcı girişini okur.

ECHO A current build of Test Harness exists.
set /p delBuild=Delete preexisting build [y/n]?: 

Kullanıcı istediği kadar harf yazabilir ve bu delBuild değişkenine gider.


36
Not: kullanıcı girişini şu şekilde kullanabilirsiniz%delBuild%
Jacob

1
Etkinleştirildiğinde echo !delBuild!yürütmede size daha güvenilir bir çıktı sağlayacağına dikkat edinsetlocal EnableDelayedExpansion
xacinay

29

Hemen çıkmak yerine hızlı bir şekilde bir cmd örneğini açık tutmak istiyorsanız, aşağıdakileri yapmanız yeterlidir

set /p asd="Hit enter to continue"

betiğinizin sonunda ve pencereyi açık tutacaktır.

Bunun asdbir ortam değişkeni olarak ayarlanacağını ve başka herhangi bir şeyle değiştirilebileceğini unutmayın.


15
bu amaçla, birisi pausekomutu icat etti . Ayrıca öyle set /pdeğil set \p.
Stephan

6
"Herkesin söylediği gibi", cevabın zaten verildiğini ima eder, bu nedenle daha fazla bilgi olmadan başka bir cevap gereksizdir
jeb

1
@jeb haklısın. Benim sorunum değişkenler ve yankı içermeleriydi, ancak bunların hiçbirine ihtiyacım yoktu. Hiçbir toplu deneyimim olmadığı için cevaplarını ayrıştırmam bir iki dakika sürdü. Cevabımın ihtiyaçlarıma uygun minimum minimum cevabı karşıladığına inanıyorum.
TankorSmash

@Stephan teşekkürler dostum, her iki konuda da. Bir komut dosyası tamamlandıktan sonra cmd örneğini çıkmak için tutmanın bir yolunu arıyordum, yalnızca X süresi için duraklatmak yeterli değildi.
TankorSmash

@ArslanAhmad Az önce test ettim, hala çalışıyor cmd, ancak Powershell'den değil. Doğru şeyi kullandığınızdan emin olun.
TankorSmash

18

Mevcut cevaba ek olarak aşağıdaki gibi varsayılan bir seçenek ayarlamak da mümkündür:

echo off
ECHO A current build of Test Harness exists.
set delBuild=n
set /p delBuild=Delete preexisting build [y/n] (default - %delBuild%)?:

Bu, kullanıcıların varsayılanı girmek istiyorlarsa "Enter" tuşuna basmalarına olanak tanır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.