1

既存の A.bat :

rem set variable pathVariable to appropriate value

set pathVariable=../Doc/English/MyDoc.htm

rem asd

B.bat から、pathVariable の値をスペースを含むパスで更新する必要がありますが、スペースを %20 に置き換えた後、B.bat を実行すると、A.bat は次のようになります。

rem set variable pathVariable to appropriate value 

set pathVariable=C:/Program%20Files/XXX%20YYY/MyDoc.htm 

rem asd 

私はこれで遊んでみましたが、書くことができました

@echo off
setlocal enabledelayedexpansion
set inputFile=A.bat
set outputFile=A_New.bat
set pathVar=../Doc/English/MyDoc.htm
set newPathVarSpace=C:/Program Files/XXX YYY/MyDoc.htm

set space=%%20
set newPathVarNoSpace=%newPathVarSpace: =!space!%
echo %newPathVarNoSpace%

for /f "tokens=1,* delims=" %%A in ( '"type %inputFile%"') do (
SET line=%%A
rem SET modified=!string:%pathVar%=%newPathVarSpace%!
SET modifiedLine=!line:%pathVar%=%newPathVarNoSpace%!

echo !modifiedLine! >> %outputFile%
)

スクリプトは機能しますが、保存したい空白行をすべて食べてしまいます。ご協力いただきありがとうございます。

4

1 に答える 1

0

以下のコードを試してください -

コウモリ

rem set variable pathVariable to appropriate value.
pathVariable=C:\Test

B.バット

@echo off
    setlocal enableextensions disabledelayedexpansion

    set "config=.\A.bat"
    set "path=C:\Batch projects\Batch tests\bin\Debug App"

    for /f "tokens=*" %%l in ('type "%config%"^&cd.^>"%config%"'
    ) do for /f "tokens=1 delims== " %%a in ("%%~l"
    ) do if /i "%%~a"=="pathVariable" (
        >>"%config%" echo(pathVariable=%path%
    ) else (
        >>"%config%" echo(%%l
    )

    type "%config%"

    endlocal

に移動しA.BAT、メモ帳で開き、以下のように pathVariable 値を確認します -

C:\Batch projects\Batch tests\bin\Debug App
于 2015-05-04T15:51:35.953 に答える