gpt4 book ai didi

windows - 将字符串替换为多个文件的批处理

转载 作者:可可西里 更新时间:2023-11-01 10:57:53 26 4
gpt4 key购买 nike

我正在尝试使用建议的脚本 here .

我的目标是能够为多个文件重用该脚本。我有一个文件包含此脚本,另一个文件仅使用不同的参数多次触发脚本。

ReplaceString.bat

@echo off
REM -- Prepare the Command Processor --
SETLOCAL ENABLEEXTENSIONS
SETLOCAL DISABLEDELAYEDEXPANSION

::BatchSubstitude - parses a File line by line and replaces a substring"
::syntax: BatchSubstitude.bat OldStr NewStr File
:: OldStr [in] - string to be replaced
:: NewStr [in] - string to replace with
:: File [in] - file to be parsed
:$changed 20100115
:$source http://www.dostips.com
if "%~1"=="" findstr "^::" "%~f0"&GOTO:EOF
for /f "tokens=1,* delims=]" %%A in ('"type %3|find /n /v """') do (
set "line=%%B"
if defined line (
call set "line=echo.%%line:%~1=%~2%%"
for /f "delims=" %%X in ('"echo."%%line%%""') do %%~X
) ELSE echo.
)

让我们说:

foo.bat

set oldString=foo
set newString=newFoo

ReplaceString.bat %oldString% %newString% someFile.txt >someFile.txt

ReplaceString.bat %oldString% %newString% someFile2.txt >someFile2.txt

但无论出于何种原因,在成功运行第一个调用后执行停止。

我尝试使用START & CALL 调用ReplaceString.bat,尝试不将输出重定向到文件,但每次我最终得到了相同的结果。

我希望能够强制 foo.bat 继续运行,或者 ReplaceString.bat 不退出。

编辑:我错误地认为脚本提前结束,但实际发生的是,我只是没有收到控制台的输出,命令确实使用 CALL 命令运行。我的脚本的另一个问题是将输出重定向回输入文件,这是通过将输出重定向到一个临时文件并在调用结束后将其替换为原始文件来解决的。

最佳答案

无论您在 foo.bat 中以有问题的方式使用ReplaceString.bat 都有效;您应该按如下方式更改它:

set oldString=foo
set newString=newFoo

CALL ReplaceString.bat %oldString% %newString% someFile.txt >someFileX.txt

CALL ReplaceString.bat %oldString% %newString% someFile2.txt >someFile2X.txt
  1. 请注意 ˙CALL˙ command 调用一个批处理程序:

CALL a second batch file
The CALL command will launch a new batch file context along with any specified parameters. When the end of the second batch file is reached (or if EXIT is used), control will return to just after the initial CALL statement.

Arguments can be passed either as a simple string or using a variable.

  1. 请注意,如果您将 ReplaceString.bat 输出重定向到与 ReplaceString.bat %oldString% %newString% someFile.txt >someFile.txt 中相同的文件进行解析,然后是 redirection operator >首先清空输出文件,这样被调用的脚本就没有要解析的东西(或解析一个空文件)…使用不同的输入和输出文件,如上面的代码示例所示。

关于windows - 将字符串替换为多个文件的批处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37906281/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com