質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

Q&A

解決済

2回答

4720閲覧

バッチファイルで複数ファイルの置換をワンステップで完了させたい。

kyosanta

総合スコア15

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

0グッド

2クリップ

投稿2018/01/16 06:35

###前提・実現したいこと
前回も似たような質問をさせていただきました。
何度もすみません。
バッチファイルで複数ファイルの特定行の置換がしたいです。
単一ファイルの置換はネット上に溢れていますが、複数ファイルに関しては特に変数に関して書かれていません。
なんとか、一時ファイルを作らずにワンステップで元ファイルに置換を反映扠せられないでしょうか。
現状では、本文の二重出力か置換行のみしか出力されません。
また、リダイレクトの出力先に変数を指定しているので、ファイルのリネームにも一手間かかります。

前回はパワーシェルをご紹介頂きましたが、これは、考え方の問題だと思うので、バッチファイルでの問題解決方法を教えてください。

よろしくおねがいします。

###発生している問題・エラーメッセージ

echo xxx >> %%a.txt → aaa.con.txt or echo xxx >> 1%%a → 1aaa.con いづれにせよ次はどう余分な名前部分をオミットするかです。 ファイル名のリネームについてはわかるのですが、特定部分を削除する方法がわかりません。

###該当のソースコード

@echo off cd %~dp0 for %%a in (*.con) do ( for /f "delims=" %%b in (%%a) do ( set line=%%b echo !line:0=1! >> %%b←この行をなんとかしたい。 ) )

###試したこと

###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

サイトの趣旨の則って、自己解決の方法を記載します。
需要があるかわからず、あまりエレガントな解法でもありませんが記載します。

上記のソースコードの前にバックアップと同様の手順を行い、別のディレクトリに出力し、後にオリジナルフォルダを削除、新規フォルダをリネームという方法で解決出来ました。
どうせバッチで自動化するので、手順自体は煩雑ですがなんとかバッチのみで解決しました。

参考までに以下ソースコード

@echo off rem カレントディレクトリを取得 cd %~dp0 rem 予備ファイルの作成 mkdir ctest1 rem 作業フォルダに移行 cd test1 for %%a in (*.con) do ( for /f "delims=" %%b in (%%a) do ( set line=%%b echo !line:0=1! >> ..\ctest1 ) ) rem 親ディレクトリに移動 rem 後片付け echo Y | rd /s test1 rename ctest1 test1 pause

投稿2018/01/17 01:56

kyosanta

総合スコア15

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

なぜそのような数々の縛りを入れているのかわかりませんが、その縛りの中ではできません。

ただしバッチファイルは他のソフトを呼び出せるので、そのようなことのできるソフトを探すか作ってインストールして呼び出せばできます。

バッチファイルにできることは限られています。パワーシェルならできます。
これは考え方の違いではなく、そもそものスクリプト実行環境の能力の差です。
自転車で運べないものは乗用車で運びましょう。
乗用車で運べないものはトラックで運びましょう。

投稿2018/01/16 10:25

Zuishin

総合スコア28660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kyosanta

2018/01/16 11:16

わかりました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問