- 締切済み
バッチファイルコマンド / 文字列表示
開くと指定した文字列が表示されるバッチファイルの作り方を教えてください。ただし,表示させたいのはかなり長い長文です。(改行なし,すべて半角英数,WindowsXP使用)
- みんなの回答 (10)
- 専門家の回答
みんなの回答
#1です。 8KBと言ってましたが、それはディスク上のサイズで 正確には半角8,176文字でした。(7.98KB) 「set /p <NUL="文字列"」で改行無しの文字列を表示できます。 面倒ですが以下のように記述すれば、単一バッチファイルでも可能です。 文字列表示後のコマンド実行も可能です。 ------------------------------- @echo off set /p <NUL="8,176文字以内の文字列" set /p <NUL="8,176文字以内の文字列" set /p <NUL="8,176文字以内の文字列" set /p <NUL="8,176文字以内の文字列" : : (任意のコマンド) -------------------------------
- pita-gora
- ベストアンサー率70% (102/145)
>いったいどういう処理をしているのか説明していただけないでしょうか。 コマンドの説明をします。 @more +2 "%~f0" >CON @はecho offと同じ意味でコマンド自体を表示しないための記号です。 more コマンドは指定したファイルを1画面ずつ表示するコマンドです。オプションに +2 をつけているので指定したファイル名の先頭から2行スキップして(=3行目から)表示します。 "%~f0" は、このバッチファイル自身のファイル名をフルパスで表示するものです。 >CON は more コマンドの出力結果をそのままだと1画面毎に停止するため、リダイレクトしてCON(コンソールデバイス)に出力します。 結果として、指定したファイル(=このバッチファイル自身)の3行目から表示します。 2行目の @exit /b はこのバッチファイルを終了するコマンドです。 この記述があるので、3行目以降に書かれている、表示したい長文の文字列はバッチファイルの実行からは無視されます。 >あと,長文の後にコマンドを打ちたいのですが。 この方法では無理ですね。バッチファイルなので長文を先に書いてしまうと、長文をバッチファイルのコマンドとして実行しようとしてエラーメッセージなどが表示されてしまいます。3行目以降に書いてください。
- pita-gora
- ベストアンサー率70% (102/145)
#7です。訂正です。 バッチの起動なので拡張子を省略する場合もありますね。 以下のように1行目の記述を変えてください。 -------------------------------------------------------------- @more +2 "%~f0" >CON @exit /b ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ --------------------------------------------------------------
- pita-gora
- ベストアンサー率70% (102/145)
他の方の回答に対するコメントも拝見しました。 たとえば、アルファベット260文字を表示する例ですが、次のようなバッチで表示可能です。 -------------------------------------------------------------- @more +2 %0 >CON @exit /b ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ -------------------------------------------------------------- @exit /bの次の行以降に表示させたい長文を延々記述して、全体をバッチファイルとして保存してください。8KBを越えても改行なしでも大丈夫です。 バッチのアイコンをダブルクリックして表示させたい場合は、@exit /bを@cmd /k に変えてください。 XP Pro で動作確認しました。
- tatsu99
- ベストアンサー率52% (391/751)
#4です。 >投稿ありがとうございます。単数のバッチのみで実現するのは不可能 >でしょうか。お願いします。 そうすると、#2のかたの echo "8Kバイト以内の長い長文" 上記の行を、何行も記述するしかないかと思います。 (具体的に何行までが指定可能かは、やってないのでわかりませんが。また、上記の場合、改行されてしまいますが、それではだめでしょうか) ただ、かなり長い8K以上の長文を表示することが、本当の目的ではなく、その為の手段であれば、本当にあなたがなさりたいことを記述されれば、また別の解決方法があるかもしれません。 (例えば、長文表示がビデオカードの表示機能の測定のためであれば、ベンチマークという方法もあります)
- tatsu99
- ベストアンサー率52% (391/751)
>えぇと.... 何をしたいのか全く見えない. >「8kB をはるかに超える文字列」をただダラダラと表示させることに何の意味があるんだろう #3の方が、言ってますように、なぜそのようなことをなさりたいのか、理由がわかりません。その理由に非常に興味があります。差し支えなければ、そのようなことをなさりたい理由を教えていただけませんでしょうか。
- tatsu99
- ベストアンサー率52% (391/751)
TYPEコマンドを実行するとファイルの内容を表示することができます。(長さは制限なし) テキストファイルに表示したい長文を記述し、実行すれば実現できます。 aaa.txtに表示したい内容があれば ----------------------- TYPE aaa.txt pause ---------------------- のようなバッチファイルを作ればOKです。
補足
投稿ありがとうございます。単数のバッチのみで実現するのは不可能でしょうか。お願いします。
- Tacosan
- ベストアンサー率23% (3656/15482)
えぇと.... 何をしたいのか全く見えない. 「8kB をはるかに超える文字列」をただダラダラと表示させることに何の意味があるんだろう.
- OKwebb
- ベストアンサー率44% (92/208)
---------------- @echo off echo "長い長文" ----------------
補足
投稿ありがとうございます。そのやり方なら知っていますが,最大でも8KBまでという制限があるようです。
文字列表示ですと「echo」コマンドになりますが 最大文字列長は半角8192文字です。(8Kバイト) それより長い文字列を表示させたいということでしょうか? 代わりにvbsを使います。 64Kバイトでも大丈夫でした。(もっといけるかも) -- test.vbs[呼ばれる方] ---- WScript.Echo "長文・・・" ---------------------------- -- test.bat[呼ぶ方] -------- cscript //nologo test.vbs ---------------------------- 上の2ファイルを作成し、test.batを実行します。
補足
投稿ありがとうございます。8KBははるかに超えると思います。単数のバッチのみで実現するのは不可能でしょうか。お願いします。
補足
ありがとうございます。いったいどういう処理をしているのか説明していただけないでしょうか。あと,長文の後にコマンドを打ちたいのですが。