DOSコマンドで下記の2つを実現したくて色々と
調べてみたのですがわかりませんでした。
(1)バッチファイルを実行したら、DOSプロンプトの
画面が立ち上がり、検索したい文字を入力できる
状態にする。
(2) (1)で入力された文字列が2文字以上だった場合は
エラーメッセージを表示し、再度入力させる。
(3)(1)で入力した文字列を任意のファイル内で検索し、
あれば大文字⇒小文字に変換する。
echoとpromptというコマンドを使って入力画面を
表示させることができるのかと思いましたが
なかなかうまくいかない状態でした。
何か参考になるサイトがあれば教えて頂ければ幸いです。
No.3ベストアンサー
- 回答日時:
#1です。
#1に書いたとおり動くコードを書くまで考えるのは面倒なので、(3)は方針だけ。(1)(2)
:loop
set /p VAR="英字1文字だけ入力:"
echo "%VAR%">tmp.txt
for %%F in (tmp.txt) do if %%~zF NEQ 5 echo 1文字でない&goto loop
tmp.txt に読み込んだ文字と引用符2文字と改行コード2バイトを書き込んで、ファイル長が5なら読んだ文字が1文字だとわかります。
(3) 入力した %VAR% は大文字か小文字かわからないので、小文字に変換します。
set %VAR%=%VAR:A=a%
set %VAR%=%VAR:B=b%
をZまで並べれば、%VAR%の文字は小文字になります。ここでやった文字列置き換え方法については、set /? を参照。
そこには書かれていませんが、置換元の文字は大文字・小文字が区別されません。
つまり、set DATA=%DATA:a=a% は、DATA中のAをaに置き換えます。
ファイルから文字列を読むには for /f を使います。詳しくは for /? 参照。
%LINE% にファイルから読んだ行が入っているとして、遅延環境変数展開(意味は set /? 参照)を有効にして、
set LINE=!LINE:%VAR%=%VAR%!
で、先ほど書いたように行中の大文字が小文字に変換されます。
それを echo %LINE%>>fileout.txt 等とファイルに書けばOK。
あと、考慮すべきなのは最初に英字でなく特殊記号が入力されると後段でエラーになるケースがあるので、英字であることを確認したほうがいいかもしれません。
for /? と set /? と setlocal /? を読んで上記が理解できなければ、VBScript + WSH を勉強したほうがいいでしょう。上記のようなことを書いた書籍はありませんが、VBScriptの入門書は何冊も出ています。WSHのことが書いてあるものを選んでください。
No.2
- 回答日時:
(1)について
set /p VARIABLE= 文字を入力してください:
この構文はset命令で環境変数VARIABLEに値を指定します。/pオプションをつけることにより、「文字を入力してください」の部分がプロンプトに表示されます。
(2)について
環境変数の長さを調べるのはバッチコマンドでは基本的には無理みたいです。やり方を調べたのですが、載ってませんでした。
(3)について
バッチコマンドはファイルの書き込みができません。#1様と同様の答えになりますが、VBScriptもしくはJScriptをお使いになった方が良いと思います。
JScript、VBScript、WindowsScriptingHostの本を調べると良いと思います。ちなみに最後の名前の長いやつはバッチコマンドの拡張版としてJScript、VBScriptを使うための仕組みというかプログラムです。それをつかってファイルの書き込みができるようになります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- その他(プログラミング・Web制作) プログラミング pythonの問題について 2 2022/04/19 00:41
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/06/15 14:11
- Access(アクセス) capeofdragonと申します。 Access2016を使っております。 あるフォームがあり、テ 2 2022/09/09 13:18
- Android(アンドロイド) スマホでパソコン操作の文字入力 2 2022/05/12 21:13
- その他(ソフトウェア) 一太郎付属の”全件検索”ツールの不具合 3 2023/07/25 15:03
- gooブログ Twitterの動画画面をgooブログに埋め込めない 4 2022/06/03 16:40
- UNIX・Linux JSLinuxのコマンドについて。 abの小文字aを大文字Aに置換して標準出力するコマンドを1行で示 1 2022/07/25 18:34
- Windows 10 WINDOWSのライセンス認証ができない 7 2022/11/09 15:43
- その他(Microsoft Office) WordやExcelで英数字のみ半角または全角にしたい 6 2022/08/03 08:18
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
make test って何をするための...
-
バッチ終了時にDOS窓を閉じるコ...
-
コマンドプロンプトをクリック...
-
BATファイル作成時の記述に...
-
バッチファイル 文字列にスペ...
-
ftpコマンドを実行すると「425 ...
-
バッチコマンドのIF文(条件...
-
C言語で、string.h conio.hを使...
-
バッチファイルを使ってテキス...
-
VC++で音量の調整、ミュートは。
-
バッチファイルについて教えて...
-
ショートカットをデスクトップ...
-
メールにバイナリーファイルを...
-
AccessVBAから差し込みWORD起動...
-
FTPでUNIX上のシェルを起動する...
-
DOSコマンドで指定日数よりも過...
-
FTPサーバ(ACOS)にあるファイル...
-
VBSでタイマー
-
シェル(sh)で実行コマンドを標...
-
コマンドプロンプトとCygwinの違い
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチ終了時にDOS窓を閉じるコ...
-
バッチファイル 文字列にスペ...
-
ショートカットをデスクトップ...
-
make test って何をするための...
-
コマンドプロンプトをクリック...
-
バッチコマンドのIF文(条件...
-
シェルの「:コマンドが見つか...
-
findstrでヒットした1行前の文...
-
ftpコマンドを実行すると「425 ...
-
Pythonで単純にファイルを結合...
-
コマンドプロンプトで、特定の...
-
コマンドプロンプトでファイル...
-
コンピュータ名をファイル名に...
-
バッチファイルを使ってテキス...
-
SSH接続でwindowsサーバのコマ...
-
バッチファイルで実行コマンド...
-
フォルダ、ファイル操作に最適...
-
バッチファイルでdiskpart.exe...
-
2つ目の「pause」は無効?
-
AccessVBAで実行時間を指定する...
おすすめ情報