こんばんは
あと少しですばらしい自動化バッチが完成するところなんですが、1点だけできなくて困っているところがあります。
バッチファイルと同じディレクトリにある index.xml の一行目は次のようになっています。
C:\folder\folder\file\hoge.ttxt<?xml version="1.0"?>
すべて1行目です。同じ論理行です。
本来、<?xml version="1.0"?>で始まらなければならない xml ファイルが、いろいろな処理の都合上、冒頭にファイルパスが紛れ込んでしまっているのです。前工程の処理は私の手を出せる範囲ではなく、この状態からスタートしなければなりません。
このファイルの1行目から冒頭のファイルパスの部分を削除したいと思っています。
パスは毎回違うので、1行目すべてを「<?xml version="1.0"?>」で置き換える、という動作にすれば確実だと思います。
具体的なやり方を教えてください。
xml ファイルは大きいときで 7MB くらいあります。UTF-8で保存しています。
No.2ベストアンサー
- 回答日時:
回答遅れてすみません。
ifの処理がうまくいかないとのことなので、for処理を見たら、
読み飛ばし機能がついていました。これでどうでしょうか?
cpch 65001
echo ^<?xml version="1.0"?^> >>test.txt
for /f "skip=1 delims=" %%line in ( index.xml ) do (
echo %%line >>test.txt
)
この回答への補足
http://stackoverflow.com/questions/5450921/batch …
別ファイルに出力せずとも上記のサイトの方法で
for /f "skip=1 delims=" %%l in ("%%x") do (>>tmp echo.%%l)
move /y tmp "%%x"
このようにすればいいことがわかりました。
ありがとうございます。
こちらの環境では「%%line」とすると動作しませんでした。
予約後か何かでしょうか。原因は不明です。試行錯誤の結果、この変数名を変えたら動きました。
cpch 65001
echo ^<?xml version="1.0"?^> >>test.txt
for /F "skip=1 delims=" %%a in ( index.xml ) do (
echo %%a >>test.txt
)
ファイルが7MBくらいあるので、この動きだとちょっと実用性に問題があるかもしれません。
ほかにもっとスマートな(ファイルの1行目だけ置き換えて保存とか)ができるか調べてみます。
No.3
- 回答日時:
他の質問もそうだけど, 「バッチファイルだけでなんとかしよう」というのがそもそも非現実的なんだと思う.
ちなみに #2 の問題はヘルプを読めばわかる.
そうですね。
でもこれができれば、当面はすべてが自動化されて手間はかからなくなります。
圧縮や解凍についてはソフトをインストールしてコマンドから使うようにしていますよ。
今更ながら、VBSでやればよかったのか、とも思いますけどね。
No.1
- 回答日時:
作成するファイル名は、お任せします。
chcp 65001
set 変数 ""
for /F を使って入力を1行ずつ読み込む(
if 変数が空文字だったら
echo <?xml version="1.0"?> >>出力ファイル
set 変数 "処理済み"
else
echo 一行分のデータ >>出力ファイル
)
というか、こんな仕様で処理をするとあなたがバグを仕様化しているので、
後々、問題になりますよ。
この回答への補足
@echo off
setlocal enabledelayedexpansion
set skip=""
for /F "delims=" %%a IN (index.xml) DO (
if !skip!=="" (
echo ^<^?xml version="1.0"?^> >> test.txt
set skip="skip"
) else (
echo %%a >> test.txt
)
)
調べてここまでできたんですが、else の処理がされていないみたいです。おそらくエスケープしなきゃいけないんですかね。
あきらめます。
ありがとうございます。
説明が気になっているところを書き直してみたんですが、なかなか動作しません。
for /F を使って入力を1行ずつ読み込む(
これは
for /F "delims=" %%a in (D:\Folder\index.xml) do (
これでよいのでしょうか?
また
echo <?xml version="1.0"?> >>出力ファイル
これは、一番最初のループなので・・・出力ファイルは新たに作成する、ということでしょうか?
set 変数 "処理済み" は理解しました。
これで、2回目以降のループで、先ほどの出力ファイルにどんどん追加していく、ということですよね?
7MBくらいのファイルの先頭行を定型的に置き換えるだけなんですが、のこりすべてを別のファイルとして書き出すしか手はないのでしょうか?ほかにスマートにできる方法がありましたら教えてください。
原因はまだ不明ですが、いただいたコードをうまく書き換えて実行可能なものにできませんでした。
たとえば
指定のファイルを開いて1行目だけを <?xml version="1.0"?> にして保存して閉じる、とか
bat ファイルというのはそういう操作が簡単にできるのかと思っていましたが、どうもコードを見てもなかなかピンとくるものがなく・・・
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) vbaのエラー対応(実行時エラー7:メモリが不足しています) 4 2023/04/24 00:20
- Visual Basic(VBA) vbaの構文の修正相談(xmlファイルを順に開いてコピペ作業) 1 2023/04/22 01:18
- XML XML同じ名前の要素を自動で集約するツール 1 2022/04/11 09:21
- Visual Basic(VBA) エクセルVBA(実行時エラー438)の対処法を教えてもらえないでしょうか 3 2023/04/22 13:43
- WordPress(ワードプレス) ワードプレスにて .xmlファイルの使い方をご存知の方、よろしくお願いいたします。 2 2022/09/30 00:55
- AJAX 自作の地図をグーグルマップのようにしたい 3 2022/11/15 11:53
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- UNIX・Linux テキストファイルをページ番号付きでコマンドラインから印刷したい 1 2023/02/22 12:47
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/08 11:02
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
このQ&Aを見た人はこんなQ&Aも見ています
-
10代と話して驚いたこと
先日10代の知り合いと話した際、フロッピーディスクの実物を見たことがない、と言われて驚きました。今後もこういうことが増えてくるのかと思うと不思議な気持ちです。
-
大人になっても苦手な食べ物、ありますか?
大人になっても、我慢してもどうしても食べれないほど苦手なものってありますよね。 あなたにとっての今でもどうしても苦手なものはなんですか?
-
これが怖いの自分だけ?というものありますか?
人によって怖いもの(恐怖症)ありませんか? 怖いものには、怖くなったきっかけやエピソードがあって聞いてみるとそんな感覚もあるのかと新しい発見があって面白いです。
-
この人頭いいなと思ったエピソード
一緒にいたときに「この人頭いいな」と思ったエピソードを教えてください
-
ギリギリ行けるお一人様のライン
おひとり様需要が増えているというニュースも耳にしますが、 あなたが「ギリギリ一人でも行ける!」という場所や行為を教えてください
-
ファイルの先頭行を全て削除したい
Windows Vista・XP
-
バッチでテキストファイルから任意の行のみ取得したい
その他(プログラミング・Web制作)
-
batファイル処理でのテキストファイルの内容を編集
その他(コンピューター・テクノロジー)
-
-
4
バッチ処理でファイルの中身を変数に入れるやり方
その他(プログラミング・Web制作)
-
5
バッチファイルを使ってテキストファイルの任意の行を削除したい
その他(プログラミング・Web制作)
-
6
txtファイルから特定の文字列が書かれた行だけを取得や削除するソフト
フリーソフト
-
7
Windowsのバッチファイルを利用しtxtファイルの指定のした位置に文字を追加する方法
その他(プログラミング・Web制作)
-
8
batである文字列内に特定の文字列が含まれているか確認したい
その他(プログラミング・Web制作)
-
9
echo abc" >> test.txt で、先頭に追加するには?"
その他(OS)
-
10
テキストファイルの1行目のみを削除したい
その他(プログラミング・Web制作)
-
11
テキストファイルから最終行の抽出
Windows Me・NT・2000
-
12
DOSコマンドのforで空白行をスキップしない
UNIX・Linux
-
13
バッチファイルで変数の中身をファイル出力したい
UNIX・Linux
-
14
Windowsのバッチファイルで正規表現の置換方法について…
Windows 10
-
15
ファイルの最後に文字列挿入
その他(プログラミング・Web制作)
-
16
テキストファイルの最終行を削除したいのですが
その他(プログラミング・Web制作)
-
17
コマンドプロンプトのエラーについて
その他(パソコン・周辺機器)
-
18
バッチファイルで、iniファイルの内容を一部書き換える方法を教えてください。
その他(プログラミング・Web制作)
-
19
バッチファイル 指定行の切り出し
その他(Microsoft Office)
-
20
テキストファイルの特定行、特定列に文字を挿入
Windows Me・NT・2000
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~12/2】 国民的アニメ『サザエさん』が打ち切りになった理由を教えてください
- ・ちょっと先の未来クイズ第5問
- ・【お題】ヒーローの謝罪会見
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バッチファイルでテキストファ...
-
DOSコマンドラインからxmlファ...
-
XMLファイルの作り方がわかりま...
-
CPUの考え方を教えてください ...
-
XMLで要素が記述された順番に意...
-
このエラー、何とかなりません...
-
2分探索木の高さを求めるプロ...
-
Listからのnull要素を削除方法は?
-
ルート要素ノードが2個ある場合?
-
VB6でXMLを処理するには
-
SNMP リンクダウンとノードダ...
-
methodCallが定義されていない!?
-
Excel-VBAでXMLの複数ノードの...
-
TreeView の初期表示について
-
コンテキストメニュークリック...
-
XSLTにてタグ名を取得する方法
-
メモリのセクションに関して
-
VB6.0でDOMを使用して...
-
XPathで途中に名前空間が設定さ...
-
MSXMLを使ってノードを削除した...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチファイルでテキストファ...
-
XMLファイルの作り方がわかりま...
-
DOSコマンドラインからxmlファ...
-
eclipseへのxmlファイル追加
-
Excel(2007以降)をxml形式に変...
-
VBSでXMLを読込、検索結果をテ...
-
ExcelVBAで書き出した文字が化ける
-
C#で使用中のファイルに別のフ...
-
JavaでXMLのNodeツリーをファイ...
-
msnのsitemap.xmlの更新の日付...
-
VBでOSの環境変数を参照する方...
-
xmlを読み込んで、データをリス...
-
ノベルゲームを作る場合、
-
DataSetのwriteXmlでのXML宣言
-
どこが間違っているのでしょうか
-
XMLファイルのattribute値を取...
-
VBAでxmlファイルの置換をしたい
-
Windowsで見かけるxmlファイル...
-
XMLでオリジナルの属性を取得
-
ie6ではxmlファイルがだせない
おすすめ情報