
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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バッチ終了時にDOS窓を閉じるコ...
-
xCopyコマンドでネットワークご...
-
WSHで他のバッチを呼びその終了...
-
コマンドプロンプトをクリック...
-
シェルスクリプト(.sh)で、10進...
-
DOSコマンドに詳しい方、お知恵...
-
コンピュータ名をファイル名に...
-
コマンドプロンプトでファイル...
-
バッチえファイルを編集するに...
-
コマンドプロンプト
-
AccessVBAで実行時間を指定する...
-
バッチファイル 文字列にスペ...
-
VS2019のコンソールC++からGn...
-
VBA 特定文字含むファイル
-
バッチファイルについて教えて...
-
Pythonで単純にファイルを結合...
-
make test って何をするための...
-
findstrでヒットした1行前の文...
-
シェル(sh)で実行コマンドを標...
-
ftpコマンドを実行すると「425 ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチファイル 文字列にスペ...
-
コマンドプロンプトをクリック...
-
バッチ終了時にDOS窓を閉じるコ...
-
make test って何をするための...
-
findstrでヒットした1行前の文...
-
ftpコマンド出力結果の取得
-
ftpコマンドを実行すると「425 ...
-
シェルの「:コマンドが見つか...
-
ショートカットをデスクトップ...
-
フォルダ、ファイル操作に最適...
-
バッチファイルを使ってテキス...
-
FTPの連続実行でフリーズする
-
コンピュータ名をファイル名に...
-
AccessVBAで実行時間を指定する...
-
CPRMでコピーしたDVDを再コピー...
-
C言語で、string.h conio.hを使...
-
シェルからpsqlコマンドでトラ...
-
バッチファイルでのMACアドレス...
-
シェルスクリプト内のcdで、カ...
-
2つ目の「pause」は無効?
おすすめ情報