テキストファイルがあります(* .pmとして保存されていますが、テキストファイルとして開くことができるため、違いはないと思います)。ファイルの内容は次のようになります。
Header
$VAR1 = {
'Keywords' => {
'X' => '80',
'Target_Path' => 'Example_PAth',
'Y' => 'File_Path',
'X' => '80',
'Y' => 'File_Path',
'X' => '80',
'Y' => 'File_Path',
sdefkjnhksdf koijsef ökiljsdf
sdefkjnhksdf koijsef ökiljsdf
sdefkjnhksdf koijsef ökiljsdf
* .batファイルを使用してExample_PAthをExample_PAth_Newに変更したいと思います。
このために私は次のコードを持っています:
@echo off
setlocal disableDelayedExpansion
:Variables
set InputFile=OldFileName.pm
set OutputFile=NewFileName.pm
set "_strFind=Example_PAth"
set "_strInsert=Example_PAth_New"
:Replace
>"%OutputFile%" (
for /f "usebackq delims=" %%A in ("%InputFile%") do (
if "%%A" equ "%_strFind%" (echo %_strInsert%) else (echo %%A)
)
)
更新: @Squashmanで言及されているように、検索および置換された文字列を変更して、行全体を含めました。検索された文字列に>文字が含まれていない場合は、完全に機能します。>を保持すると、行は正しく検出されますが、空白行に置き換えられます。回避策はありますか?PS:>文字を省略できません。
私は12時間前に与えた推奨事項に従って元のコードを変更し、それが機能することを証明するためにテストしました(OPが10時間前の更新でまだ解決策がないと言った後)。
@echo off
setlocal EnableDelayedExpansion
:Variables
set InputFile=OldFileName.pm
set OutputFile=NewFileName.pm
set "_strFind=Example_PAth"
set "_strInsert=Example_PAth_New"
:Replace
>"%OutputFile%" (
for /f "usebackq delims=" %%A in ("%InputFile%") do (
set "line=%%A"
echo !line:%_strFind%=%_strInsert%!
)
)
OutputFile:
Header
$VAR1 = {
'Keywords' => {
'X' => '80',
'Target_Path' => 'Example_PAth_New',
'Y' => 'File_Path',
'X' => '80',
'Y' => 'File_Path',
'X' => '80',
'Y' => 'File_Path',
sdefkjnhksdf koijsef ökiljsdf
sdefkjnhksdf koijsef ökiljsdf
sdefkjnhksdf koijsef ökiljsdf
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加