Windows プログラム

2013年2月28日 at 7:13 PM

MS-DOSコマンド(バッチ)にて、「~しますか?(Y/N)」みたいな対話型の実行前確認メッセージを出力するには?

2012/10/27 stackoverflow How to rename a folder with a number (ie Folder1, Folder2, etc…)

 

MS-DOSコマンドを使用して、対話型のコードを組むには「set /P」を使うことで可能です。

@Echo off
echoコピー処理開始
SET /P ANSWER="データコピーを開始してよろしいですか (Y/N)?"
if /i {%ANSWER%}=={y} (goto :yes)
if /i {%ANSWER%}=={yes} (goto :yes)
if /i {%ANSWER%}=={n} (goto :no)
if /i {%ANSWER%}=={no} (goto :no)

:no
echo 処理を終了します & pause > nul & exit

:yes
if exist \\serv01\data$\dat.txt (
xcopy \\serv01\data$\dat.txt c:\tmp  /C /Y & echo データコピーが完了しました & pause > nul & exit
) else (
echo コピー元ファイルが見当たりませんでした。処理を中断します & pause > nul & exit
)

 

VBScriptでも対話式の簡単なプログラムを組むことができます。

Option Explicit

Dim str,objWSH

Set objWSH = CreateObject("WScript.Shell")
str = InputBox("パスワードを入力してください。" & vbCrLf )

Select Case str
  Case ""
    MsgBox "キャンセルされました。"
  Case "password" 'ここがパスワード
    objWSH.Run("C:\Data\data.txt")
  Case Else
    MsgBox "パスワードが違います。",vbCritical
End Select

 

Windows Power shellはもともと対話式シェルによるオペレーション機能を備えているのでとくに留意することはありません。

PS C:\Users\user> $s = Read-Host
 (Windows PowerShell ISEではここで文字列入力ダイアログが開く)
PS C:\Users\user> echo $s
ABC

One Comment

  1. If I quit stalking you and didn't comment (nearly) every day, would you worry about me?MumP.S. Those stn9kin&#3i; WORDS are getting harder and harder. Took me about six tries the last time I commented. I'm on my 3rd try now.

Leave a Reply

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>



こちらの関連記事もオススメ!