2016-03-27 26 views
-2

私はデータを持つテキストファイルを持っています。そして、私は#NAME:,の後にテキストをコピーし、その後にさらにテキストを追加したいと思います。テキストファイルのデータを検索して置き換える方法は?

オリジナルファイル:

#NAME:,Disco Ball 
http://my.site.com/discoball.mp3 
#NAME:,Lasers 
http://my.site.com/lasers.mp3 

新しいテキストファイル:

#NAME:,mp3-id="Disco Ball",Disco Ball 
http://my.site.com/discoball.mp3 
#NAME:,mp3-id="Lasers",Lasers 
http://my.site.com/lasers.mp3 

あなたが見ることができるように、私は#NAME:,後にテキストをコピーして、新しいテキストの中にそれを追加できるようにしたいmp3-id=" ",

これをバッチファイルまたはVBスクリプトのいずれかで実行するにはどうすればよいですか?

+0

私たちはあなたから何らかの努力をしなければならないので、あなたの質問を編集し、今まで試したコードを投稿してください! – Hackoo

答えて

1

VBScriptを使用する場合は、ファイルを開き、内容を文字列にコピーし、正しいセクションを置き換えてからファイルに書き込みます。

Read and write into a file using VBScript

1
@ECHO OFF 
SETLOCAL 
SET "sourcedir=U:\sourcedir" 
SET "destdir=U:\destdir" 
SET "filename1=%sourcedir%\q36242413.txt" 
SET "outfile=%destdir%\outfile.txt" 
(
FOR /f "usebackqtokens=1*delims=:," %%a IN ("%filename1%") DO (
IF /i "%%a"=="#NAME" ECHO(%%a:,mp3-id="%%b",%%b 
IF /i "%%a"=="http" ECHO(%%a:%%b 
) 
)>"%outfile%" 

GOTO :EOF 

あなたの状況に合わせてsourcedirdestdirの設定を変更する必要があります。

テスト用にデータが入っているq36242413.txtという名前のファイルを使用しました。

は、単にファイルの各行を読み取り、「:,両方が区切り文字であることを意味するdelimsとして:,を使用%

OUTFILE%として定義ファイルを生成します。

線従ってとして割り当てられます(最初のシーケンス・オブ・デリミタの前の部分)は、このファイル名は、そのtokens=1*の作用)

usebackqが指示cmdある(%%と%%bにラインの(残り)します引用される。

したがって、%%aまずデリミタシーケンス後#NAME又はhttp%%bラインの残りの部分のいずれかを取得するので、適切な置換文字列外使用echoされてテストされます。

1

もしあなたがVBSを受け入れることができれば、JScriptでも使えるはずです。

JREPL.BAT regular expression find/replace utilityは、XP以降の任意のWindowsマシンでネイティブに実行される純粋なスクリプト(ハイブリッドJScript /バッチ)です。

JREPL.BATソリューションは、ほぼ自明な解になり:あなたはバッチスクリプト内のコマンドを置けば

jrepl "(^#NAME:,)(.*)" "$1mp3-id=\q$2\q,$2" /x /f test2.txt /o - 

使用CALL JREPLを。

完全なドキュメントは、コマンドラインからjrepl /?を介して入手できます。または、jrepl /??をページ出力に使用してください。

0

あなたはあなたのデータを変換するために、このバッチであなたのファイルのテキストをドラッグ&ドロップすることができますマグー

の答えから、ほんの少しの微調整は:

@Echo off 
Set "filename=%1" 
For %%i in (%filename%) Do (set outfile="%%~ni_converted%%~xi") 
(
    For /f "usebackq tokens=1* delims=:," %%a in (%filename%) Do (
    If /i "%%a"=="#NAME" ECHO(%%a:,mp3-id="%%b",%%b 
    If /i "%%a"=="http" ECHO(%%a:%%b 
    ) 
)>%outfile% 
0

が、これはあなたを助けることを願っています。 。

のVBScriptコード:

filename = "C:\path\file.txt" 
textToSearch= "#NAME:," 
attachText= "mp3-id=" 
Set fso = CreateObject("Scripting.FileSystemObject") 
Set f = fso.OpenTextFile(filename) 
Set outputFile = fso.CreateTextFile("C:\path\output.txt", True) 
Do Until f.AtEndOfStream 
    fileLine=f.ReadLine 
    if Instr(1,fileLine, textToSearch) then 
    reminingText=Replace(fileLine ,textToSearch , "") 
    '#NAME:,mp3-id="Disco Ball",Disco Ball 
    newLineText= textToSearch & attachText & chr(34) & reminingText & chr(34) & "," & reminingText 
    else 
    newLineText=fileLine 
    End if 
    outputFile.WriteLine(newLineText) 
Loop 
outputFile.Close 
f.Close 
関連する問題