• ベストアンサー

Windows Dosコマンドで

WinXP HE あるいは PEでのお話です。 Dosコマンドで(バッチ処理をさせたいのですが)、 あるテキストファイルの1行目の先頭文字2文字を 切り取って標準出力する方法はあるのでしょうか? いろいろ調べてみたのですが、 UNIXほど強力なテキストエディット機能が無いようで困っています。

  • houko
  • お礼率38% (8/21)

質問者が選んだベストアンサー

  • ベストアンサー
  • pita-gora
  • ベストアンサー率70% (102/145)
回答No.5

制限付きですがバッチのみで行う例です。 echotop sample.txt と指定することで、sample.txt の1行目の先頭2文字を表示します。 ---------------------------------------- echotop.bat @echo off for /F "delims=" %%l in (%1) do set x=%%l && goto :break exit /b :break echo %x:~0,2% ----------------------------------------- ただし、テキストファイル中にリダイレクション ">", "<" や パイプ "|" などの特殊文字があるとうまく動作しません。

houko
質問者

お礼

明確なご回答、誠にありがとうございました。 やっと、どうにか目的を果たす事ができました。

その他の回答 (4)

  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.4

No.1です。 WSHを使ってみました。 test.vbsという名前で以下の1行の内容のファイルを作り、バッチと同じフォルダに置きます。 WScript.StdOut.Write WScript.StdIn.Read(2) & vbCrLf バッチの中から以下のように呼び出して使います。 cscript //B test.vbs < test.txt

  • koko_u
  • ベストアンサー率12% (14/116)
回答No.3

Windows PowerShell なんてのもあるで。 ( Get-Content -Path target.txt )[0].Substring(0, 2) とか。

  • JAWS55
  • ベストアンサー率38% (176/452)
回答No.2

標準コマンドでも、環境変数にファイル1行目の文字列をセット(for文)してから、setで環境変数の1文字目から2文字を切り出し、標準出力に出来そうです。 しかしUnixLikeのコマンドを使った方が簡単でしょうね。

  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.1

UNIXのコマンドをご存じならば、Cygwinを入れてheadやcutを使うのが手っ取り早いと思います。

houko
質問者

補足

本来そうなんですけど、今回UNIXコマンドは使えない環境におりまして・・・。 cutコマンドが使えれば、こんな楽な話は無いのですが。

関連するQ&A

  • DOSコマンドでの単純なループ処理

    DOSコマンドで単純なループ処理を記述する方法を教えて下さい。 UNIXで下記のようにwhileコマンドを使用すると、 /export% While(1) ? ループ処理で実行させたいコマンドを記述 ? echo "" ? sleep 3 3秒おきにコマンドの標準出力が表示されます。 Windowsで同じようなことができたらいいなと 思うのですが、簡単な方法を知っている方がいたら 教えて下さい。

  • DOSコマンド(Windows2000)について

    DOSコマンドで、時間基準で処理を一時中断(待ち状態) という事は可能なのでしょうか? UNIXであれば、 % sleep 30 とすれば30秒処理を中断してくれると思うのですが、 DOSコマンドですと、 > pause で、入力待ちになってしまいます。 DOSコマンドにてUNIXのような処理は行えるのでしょうか? ご回答お願い致します。

  • DOSコマンド

    テキストファイル内にある指定された文字列を、指定した文字に置き換えできる DOSコマンドはありませんか? バッチ形式で、検索文字列、置き換え文字列が指定できるのが希望です。 例:テキストファイル内 C:\Documents and Settings\○○ バッチ実行後↓ C:\Documents and Settings\×× ○○を検索して××に置き換えしなさい といった感じです。

  • コマンドプロンプトで、画面表示をそのままに、コンソールログをとりたい

    バッチを使って、コンソールプログラムなどを呼び出し、そのログを保存しようとしています。 このバッチやプログラムに手を加えることはできないので、これらを呼び出す側で処理をしたいのです。 現在は、バッチの出力をvbsにパイプさせ、こちらでテキストファイルと標準出力の両方へ打ち出しています。(UnixのTeeのような処理) しかしこれでは、コマンドプロンプトで文字の色を変えたり、Boldにした情報が画面出力に反映されません。 外からexeファイルを持ち込むことが厳しいので、バッチファイルかvbsで実現したいと考えています。 イメージとしては、いったんコマンドプロンプトにコンソール出力をしてから、 コマンドプロンプトに表示された文字列をテキストファイルに保存するような感じです。 右クリックして全て選択、コピー、メモ帳でテキスト保存…のような結果になっているとよいのですが…

  • DOSでテキストファイルの中のある文字だけを消すコマンドはありますか?

    こんばんは。WindowsXPを使っています。だからコマンドプロンプトでDOSのコマンドを使っているのですが、できないことがあって困っています。 あるテキストファイルの中にある、ある文字だけを消去するコマンドってありますか? Linuxではtrというコマンドでそれができるのですが、DOSではできないんだろうか、と疑問です。 今のところ、その操作をエディタで行っていますが、何百個というファイルを扱う予定なのでDOSのコマンドでできれば、バッチファイルを作って一括処理ができるから便利だなと考えているのです。 私はwindows98から使い始めたのでDOSはあまりわからなくて、DOS世代の方などご存知でしたら教えてください。お願いします!!

  • DOSコマンドで、標準出力を出力しないようにするには?

    Windowsのバッチファイルでコマンドを実行する際、標準出力をディスプレイに表示したくないのですが、どのようにするのが、一般的なのでしょうか? CDで実行するので、ファイルに出力はしたくありません。 UNIXとかだと、nullにパイプするようなのですが…。

  • 【DOSコマンド】一致した文字列の次の単語を出力

    コマンドの実行結果の標準出力をリダイレクトしてテキストファイルに書き出しました。 このファイルを検索し、マッチした文字列の次の単語を出力したいのですが、 標準のDOSコマンド(あるいはコマンドラインで動作するフリーソフトを使用するのでも構いません)で実現するにはどうすれば良いでしょうか? テキストファイルの内容例 hogehoge: abcdefg この場合、abcdefgを出力したいです。 hogehogeは大文字小文字入り交じっています。

  • DOSコマンドについて

    UNIX系でいう「cutコマンド」的なコマンドはWindowsコマンドに存在しないのでしょうか? 大容量のテキストファイルを文字を表示できる形で分割したいのですが。。

  • 連番のファイルをDOSコマンドで

    DOSコマンドを利用し、バッチ処理でタスクスケジューラーにて、定期的に、テキストファイルへリダイレクトするのですが、ファイルネームを連番で生成してくれる、コマンド(構文?)をご教授下さい。 例:ipconfig >***.txt (***の部分を連番)

  • DOSコマンドについて

    DOSコマンドで下記の2つを実現したくて色々と 調べてみたのですがわかりませんでした。 (1)バッチファイルを実行したら、DOSプロンプトの  画面が立ち上がり、検索したい文字を入力できる  状態にする。 (2) (1)で入力された文字列が2文字以上だった場合は  エラーメッセージを表示し、再度入力させる。 (3)(1)で入力した文字列を任意のファイル内で検索し、  あれば大文字⇒小文字に変換する。 echoとpromptというコマンドを使って入力画面を 表示させることができるのかと思いましたが なかなかうまくいかない状態でした。 何か参考になるサイトがあれば教えて頂ければ幸いです。