あなたは
template.txt
The element !data1! refers to !data2!
Also, the element !data3! points to !data4!
You will need to escape exclamations
Escaped exclamation : ^!
Non escaped exclamation : !
;
; !data4!
;
が
@echo off
setlocal enableextensions disabledelayedexpansion
rem Define the set of data that will be replaced
set "data1=TEST"
set "data2=This is the data in || TEST ||"
set "data3=Another test!"
set "data4=< data inside [Another test!]>"
rem Read template (uses findstr /n to retrieve empty lines)
for /f "delims=" %%a in ('findstr /n "^" "template.txt"') do (
rem Retrieve line
set "line=%%a"
rem To retrieve the data in line var we need delayed expansion
setlocal enabledelayedexpansion
rem Output template line after removing initial numbers
rem On empty lines the for command "fails". This is detected and
rem handled by echoing an empty line
(for /f delims^=^ eol^= %%b in ("!line:*:=!") do echo(%%b)||echo(
rem Cancel delayed expansion
endlocal
)
コンソールをprocess.cmd似た何かを得るためにバッチファイルで変数展開のプロセスを "虐待" することができます出力
W:\45820941>process
The element TEST refers to This is the data in || TEST ||
Also, the element Another test! points to < data inside [Another test!]>
You will need to escape exclamations
Escaped exclamation : !
Non escaped exclamation :
;
; < data inside [Another test!]>
;
W:\45820941>
これは、テキストファイルテンプレート内の特定の文字列のためのバッチ変数を置換することが可能ですが、容量が限られており、使いにくいです。必要なテキストに "poison characters"( 'cmd'と特別な意味を持つもの)がない場合は、これを行うことができますが、' sed'や 'g )awk'。それにもかかわらず、単純な代替のために、はい、できます。 – Magoo