HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2019
0404
たけしバックドロップファイル内の文字列変換をすると「ECHO は <OFF> です。」が入ってしまう6未解決


たけしバックドロップ

リンク

2019/4/4(Thu) 21:07:18|NO.87061

はじめまして、助けて下さい。
aaa2.txtの中身で「ECHO は <OFF> です。」の文字が出ないようにしたいのですが
できませんでしょうか。
何卒、よろしくお願い致します。


aaa.txtの中身


どん栗 はま栗 いが栗

batファイルの中身


@echo off for %%a in (*.txt) do ( set keyword=%%a ) set keyword=%keyword:.txt=% set beforestr=栗 set afterstr=グリ setlocal enabledelayedexpansion for /f "delims=" %%a in (!keyword!.txt) do ( set line=%%a echo !line:%beforestr%=%afterstr%! >> !keyword!2.txt ) endlocal del %keyword%.txt

aaa2.txtの中身 ←【△batを実行した結果、出力されるファイル】

どんグリ ECHO は <OFF> です。 はまグリ ECHO は <OFF> です。 いがグリ



この記事に返信する


GENKI

リンク

2019/4/4(Thu) 23:59:17|NO.87067

どうもはじめまして。

それにしてもうーん…HSPとなんの関係がある質問なんでしょうか。
もう少しなんとかならなかったのか…とは思うものの無回答もなんなので簡単に。

ECHOはスペース開けずにドット打てば空行を出力します。
あとはif文でなんとかなるんじゃないでしょうか。

参考
https://www.k-tanaka.net/windows/cmd/echo.html

setlocalは最初にやったほうが無難な気がするけど…まあいいか。
次回から質問はHSP関連でお願いします。詳しくは右上のリンク「使い方」を参照ください。



雪月夜

リンク

2019/4/5(Fri) 08:14:50|NO.87069

aaa.txtの空行に見えるところってよく見るとタブ文字が入ってますね
タブ文字ごと出力したいということでしょうか?
私の方でも調べてみましたが、すいません力になれそうにないです

何の解決にもならないでしょうが、HSPで動きを再現してみました

#packopt name "batch" #packopt hide 1 #include"mod_regexp.as" screen 0,,,2 sdim text,10000000 sdim filelst,10000 dim files,10000 sdim gline,10000 dirlist filelst,"*.txt",1 split filelst,"\n",files beforestr="栗" afterstr="グリ" notesel text repeat length(files):fid=cnt if files(fid)="":break noteload files(fid) repeat notemax noteget gline,cnt gline=replace(gline,beforestr,afterstr) noteadd gline,cnt,1 loop notesave dir_cur+"\\"+getpath(files(fid),1+8)+"2"+getpath(files(fid),2) delete files(fid) loop noteunsel end
これをCtrl+F9で実行ファイル化すれば、batch.batと同じようなファイルが出来ますが……



たけしバックドロップ

リンク

2019/4/5(Fri) 12:17:58|NO.87074

GENKIさん、雪月夜さん

ご返信ありがとうございました。
投稿する場所が違った様ですみません。
※一旦、解決までここに投稿させて下さい。

これから、教えて頂いた情報で調査します。
進展ありましたらご連絡させて頂きます。



たけしバックドロップ

リンク

2019/4/5(Fri) 13:50:01|NO.87077

GENKIさん

上手く行きません。
もう少しヒントを頂けないでしょうか。



ぜーっと!

リンク

2019/4/6(Sat) 16:22:30|NO.87097

>たけしバックドロップさん
ここはバッチファイルについて語り合う掲示板ではないようですよ。

で、

すみません、内容をぱっと見だけで書き込むのですが、

バッチファイル内スクリプトの処理としては、ファイル内の文字列を一行ずつ読み込んで
それを部分書き換えをして、別のファイルへ一行ずつ出力する。という流れですよね?
ECHO は <OFF> です。

という文字がどのような時に表示されるかをご存知でしょうか。
コマンドプロンプトを起動して、「echo」と入力してエンターを押してください。

forで一行ずつ読み込む際、空行をも出力してるというだけだと推測するのです。
あとは言わずもがな。



さくら

リンク

2019/4/13(Sat) 19:18:25|NO.87160

解決にはならないかもしれないけど、単純に改行させてはダメですか?

echo. !line:%beforestr%=%afterstr%! >> !keyword!2.txt

「echo」コマンドの直後にピリオド「.」を付けました。



ONION software Copyright 1997-2023(c) All rights reserved.