Avatar billede freesite Nybegynder
16. februar 2013 - 23:48 Der er 5 kommentarer

batch script

Hej Eksperter

Håber der er nogle som kan hjælpe...

Jeg er ved at lave en batch fil som skal løbe alle filer igennem i et directory og finde/erstatte en streng i filerne.

Jeg kan dog ikke få (SET str_path=%%i) til at updatere værdien i str_path.




@echo off
SETLOCAL ENABLEEXTENSIONS
::SETLOCAL DISABLEDELAYEDEXPANSION
SETLOCAL ENABLEDELAYEDEXPANSION
set ot_str_find=/trunk/
set ot_str_replace=/test/
echo eeee
set str_path=ourtree/vensor
for /r  %%i in (*.php) do  (
        SET str_path=%%i                          <-------------------------
    ECHO !str_path!
    if not "%str_path%"=="%str_path:vendor=%" (   
        echo %%i
        for /f "tokens=1,* delims=]" %%A in ('"type %%i|find /n /v """') do (
            set "line=%%A"
            if defined line (
                call set "line=echo.%%line:%ot_str_find%=%ot_str_replace%%%"
                for /f "delims=" %%X in ('"echo."%%line%%""')  do %%~X >> tmp_new
            ) else echo.
        )
        move /Y tmp_new %%i >nul
    ) else echo.ddd
)
pause
Avatar billede martens Guru
17. februar 2013 - 01:02 #1
tja, det første, der lige springer i øjnene er TASTEFEJL

set str_path=ourtree/vensor
burde være
set str_path=ourtree/venDor
Avatar billede martens Guru
17. februar 2013 - 01:15 #2
delims=]"
bør være
delims=)"
Avatar billede freesite Nybegynder
17. februar 2013 - 08:32 #3
Tak for den hurtige tilbagemelding.

Problemet ligger egentlig i disse linjer

    SET str_path=%%i                       
    ECHO !str_path!
    if not "%str_path%"=="%str_path:vendor=%" (   


Det er ligesom at str_path aldrig bliver sat lig med %%i og dermed bliver der aldrig checket om "vendor" indgår i path.
Avatar billede martens Guru
17. februar 2013 - 23:13 #4
er directory ikke defineret på forhånd.... ?
Hvorfra køres filen ?
Avatar billede martens Guru
17. februar 2013 - 23:31 #5
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester