重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

あるサイトのページを良く参照しています。
そしてこの頃は中身も保存しておきたい場合が多く、
HTMLで書かれているファイルをそっくりコピーしてしまおうと思っています。

ここで質問ですが、
不要な部分(特に欲しいと思わない部分)に関する記述が、10行目から15行目にあります。
ここの部分をそっくり削除して以外をそっくりコピーするbatを教えて下さい。

なお、サイトで調べるとpowershellなる言語が有効と出てきますが、
昔ながらのコマンドプロンプトで教えてほしいです。
宜しくお願いします。

A 回答 (2件)

目的を達成したいのなら、手段に制約を付けない方が良いです。


追加で何かインストールすることに抵抗がなければ、すでに回答にあるようにsedが簡単です。
Windows標準機能なら、PowerShellかVBScriptを使う。
VBScriptはいずれWindows初期状態では使えなくなる(有効にする設定変更が必要)らしいですが、そういう意味ではPowershellは現在でも設定変更しないと使うのが面倒です。

バッチファイルでもファイルの読み書きは出来るので行数を数えながら読み書きすれば可能ですが、
・空行は無視される
・ファイル中に特殊な文字があると期待通りに動作しないかも
という制約があります。

UTF-8で書かれた i.html の1~9行目と、16~行目をo.htmlに書くとすると、

@echo off
setlocal
rem i.htmlファイルがシフトJISコードなら次行「chcp 65001」を削除
chcp 65001
set N=0
(
for /f "delims=" %%A in (i.html) do (
call :CHK
if ERRORLEVEL 1 echo %%A
)
) > o.html
exit /b

:CHK
set /a N+=1
rem 10未満か、15を越える場合は ERRORLEVELを1にする
if %N% LSS 10 exit /b 1
if %N% GTR 15 exit /b 1
rem 10以上15以下なら ERRORLEVELを0にする
exit /b 0

これだと、「空行」と「行頭が ; の行」が無視される以外、他の記号は多分大丈夫です。PowerShellかVBScriptを使えばそういう制約無し。
    • good
    • 1
この回答へのお礼

早速ありがとうございました。
まず、書いていただいたコードで1発でした。
綺麗に削除し、出力後も問題なく機能しました。
更に、他の手段についても了解です。
書いていただいたコードはこれからじっくり勉強させていただきます。
ありがとうございました。

お礼日時:2025/01/25 10:05

昔ながらのコマンドプロンプトだろうと、powershell だろうと、


バッチコマンドに直接ファイルの中身を編集するようなものはありません。
何かしらのプログラムが必要ですが、Windows の標準コマンドには
そのようなものは無かったと思います。

例えば sed がインストールしてあれば、コマンドプロンプトから
sed '10,6d' 目的のファイル名
とすれば、目的の処理ができます。

類似のことができるプログラムには、ed とか awk とか Perl とか
いろいろありますから、フリーソフトなど探してみるとよいと思います。
「エディタ」で検索して、コマンドラインから使えるものを選びましょう。
    • good
    • 0
この回答へのお礼

早速ありがとうございました。
そうだったんですか。
了解です。
sedを調べてみます。

お礼日時:2025/01/24 15:45

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A