Search code examples
windowsbatch-filefindstr

How to run combined findstr script


Hi I have a script I made using information on this page.

I realize that running two separate batch files (:SetVarand:Brains) will work but when I try to combine the two into one It doesn't work.

I'd be happy if anyone can explain to me why mine does not work and show me what I can do to make mine work.

:SetVar
Brains "Hello" "Goodbye" "input.txt" > "newfile.txt"
GOTO :Brains

:Brains
SETLOCAL ENABLEEXTENSIONS
SETLOCAL DISABLEDELAYEDEXPANSION
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.
)
PAUSE

When I use the Call command:

call :SetVar
call :Brains
goto :eof
pause

:SetVar
:Brains "Hello" "Goodbye" "input.txt" > "newfile.txt"
goto :eof

:Brains
SETLOCAL ENABLEEXTENSIONS
SETLOCAL DISABLEDELAYEDEXPANSION
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.
)
goto :eof

I get no error but I get:

C:\Users\MALKAVIAN\Batch files\change words in file>CALL :SetVar

C:\Users\MALKAVIAN\Batch files\change words in file>goto :eof

C:\Users\MALKAVIAN\Batch files\change words in file>CALL :Brains

C:\Users\MALKAVIAN\Batch files\change words in file>goto :eof

C:\Users\MALKAVIAN\Batch files\change words in file>pause
Press any key to continue . . .

Solution

  • You can try this batch file :

    I added a fourth argument to output the results of substitution in new text file :

    Edit

    So as an example, you can find the substring "http" to be replaced by "https"

    @echo off
    set "NewStr=https"
    set "InFile=%~dp0%~n0_InputTest.txt"
    set "OutPutFile=%~dp0%~n0_OutPutTest.txt"
    If Exist "%InFile%" Del "%InFile%"
    If Not Exist "%InFile%" Call :CreateExampleInputFile
    Call :FindReplace "" "%NewStr%" "%InFile%"
    pause
    set "OldStr=http"
    Call :FindReplace "%OldStr%" "%NewStr%" "%InFile%" "%OutPutFile%"
    Start "" "%OutPutFile%"
    Pause & Exit /b
    ::**************************************************************
    :FindReplace <OldStr> <NewStr> <InFile> <OutPutFile>
    REM -- Prepare the Command Processor --
    SETLOCAL ENABLEEXTENSIONS
    SETLOCAL DISABLEDELAYEDEXPANSION
    ::FindReplace - parses a File line by line and replaces a substring"
    ::syntax: FindReplace <OldStr> <NewStr> <InFile> <OutPutFile>
    ::          OldStr [in] - string to be replaced
    ::          NewStr [in] - string to replace with
    ::          InFile [in] - file to be parsed
    ::          OutFile[out] - New output file
    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.
        )
    )>%4
    Exit /b
    ::**************************************************************
    :CreateExampleInputFile
    (
        echo http://www.hyperdebrid.com
        echo http://www.fakirdebrid.net
        echo http://www.keepfiles.fr
        echo http://www.4shared.com 
        echo http://1fichier.com
        echo http://www.mega.co.nz
        echo http://www.mediafire.com
        echo http://www.uploaded.net
        echo http://www.oboom.com
        echo http://www.letitbit.net
        echo http://www.keep2share.cc
        echo http://alfafile.net
        echo http://www.bigfile.to
        echo http://www.dailymotion.com
        echo http://www.datafile.com
        echo http://www.Depfile.com
        echo http://www.Dropbox.com
        echo http://www.Extmatrix.com
        echo http://www.Fboom.me
        echo http://www.Filefactory.com
        echo http://www.Filesmonster.com
        echo http://www.Fshare.vn
        echo http://www.Keep2share.com
        echo http://www.Mega.nz
        echo http://www.Rapidgator.net
        echo http://www.Scribd.com
        echo http://www.Soundcloud.com
        echo http://www.Speedyshare.com
        echo http://www.Turbobit.net
        echo http://www.Vimeo.com
     )>"%InFile%"
     ::**************************************************************