
こんばんは
あと少しですばらしい自動化バッチが完成するところなんですが、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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
バッチでテキストファイルから任意の行のみ取得したい
その他(プログラミング・Web制作)
-
ファイルの先頭行を全て削除したい
Windows Vista・XP
-
テキストファイルの1行目のみを削除したい
その他(プログラミング・Web制作)
-
-
4
echo abc" >> test.txt で、先頭に追加するには?"
その他(OS)
-
5
バッチファイルを使ってテキストファイルの任意の行を削除したい
その他(プログラミング・Web制作)
-
6
テキストファイルから最終行の抽出
Windows Me・NT・2000
-
7
batファイル処理でのテキストファイルの内容を編集
その他(コンピューター・テクノロジー)
-
8
batである文字列内に特定の文字列が含まれているか確認したい
その他(プログラミング・Web制作)
-
9
Windowsのバッチファイルを利用しtxtファイルの指定のした位置に文字を追加する方法
その他(プログラミング・Web制作)
-
10
バッチファイル 指定行の切り出し
その他(Microsoft Office)
-
11
バッチ処理でファイルの中身を変数に入れるやり方
その他(プログラミング・Web制作)
-
12
バッチファイルで変数の中身をファイル出力したい
UNIX・Linux
-
13
Windowsのバッチファイルで正規表現の置換方法について…
Windows 10
-
14
テキストファイルの特定行、特定列に文字を挿入
Windows Me・NT・2000
-
15
ファイルの最後に文字列挿入
その他(プログラミング・Web制作)
-
16
コマンドプロンプトの「%1」と「%~1」の違いがわからない
その他(プログラミング・Web制作)
-
17
バッチで特定文字が含まれる先頭行を取得したい
Windows Me・NT・2000
-
18
バッチファイルでDirで取得したファイル名を変数に入れる方法
その他(プログラミング・Web制作)
-
19
コマンド実行結果を環境変数に代入する方法ありますか
iOS
-
20
CSVファイルの項目行を削除して結合するには?
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
画像生成AIのプロンプトの作り...
-
pythonでのローカルファイルか...
-
vba 正規表現について教えてく...
-
if関数とは?
-
プログラミングに興味があるの...
-
uwscでPauseキーが押されたら、...
-
Fortranでシステム時刻をカレン...
-
数行削除してコピーするbatファ...
-
秀丸エディターでの置き換え
-
vba クリップボードクリアにつ...
-
Geminiフォーム 画像生成で 人...
-
Python 3.12.2 か一番最新のパ...
-
AIがプログラムする時代のプロ...
-
pythonについて(初心者です)
-
pythonでhtmlファイルの指定文...
-
プログラム上での行のマージ方法
-
覚えることが少ないプログラミ...
-
従業員が1名だけのSierっている...
-
アルゴリズムとコードとは何で...
-
IT業で開発をされてる方々に質...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチファイルでテキストファ...
-
msxslで「不明な方法」エラー
-
C#で使用中のファイルに別のフ...
-
Excel(2007以降)をxml形式に変...
-
eclipseへのxmlファイル追加
-
外部ファイル(txt/csv)から文字...
-
ExcelVBAで書き出した文字が化ける
-
DataSetのwriteXmlでのXML宣言
-
XMLデータを整形して、ブラウザ...
-
DOSコマンドラインからxmlファ...
-
複数のXMLファイルからデータを...
-
質問
-
VBAでxmlファイルの置換をしたい
-
XMLファイルのattribute値を取...
-
XMLからデータセットへ
-
RDFファイルは何故拡張子が.rdf...
-
NEXUS7でSecret No5の使い方
-
XMLの編集?について
-
csv作成エラー
-
XMLファイルの作り方がわかりま...
おすすめ情報