Kom ihåg mig?
Home Menu

Menu


batch fil se om en stäng innehåller ett värde

 
Ämnesverktyg Visningsalternativ
Oläst 2013-03-18, 20:05 #1
spyvingen spyvingen är inte uppkopplad
Medlem
 
Reg.datum: Jan 2006
Inlägg: 245
spyvingen spyvingen är inte uppkopplad
Medlem
 
Reg.datum: Jan 2006
Inlägg: 245
Standard batch fil se om en stäng innehåller ett värde

Hej jag skulle vilja vet aom det finns ett enkelt sätt att i en batchfil går att se om en läng sträng innehåller ett ord eller en adress

tex
set str1 = "test.se/test/hej/pelle"
set str2 ="test.se"

jag vill alltså ta reda på om str1 innehåller str2 och vill då köra en GOTO
spyvingen är inte uppkopplad   Svara med citatSvara med citat
Oläst 2013-03-19, 00:14 #2
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Här är ett exempel på hur du kan lösa problemet:

Kod:
@echo off
::
: SeekText.bat - Test if pattern in string
: Param1 - the pattern
: Param2 - the string to check
::

echo.%2 | findstr /C:"%1" 1>nul

if errorlevel 1 (
  echo. Returnerade 1 - pattern not found
  goto inget
) ELSE (
  echo. Returnerade 0 - found pattern
  goto hittat
)
goto end

:inget
echo Hittade INGET intressant...
goto end

:hittat
echo Hittade vad vi ville ha!
goto end

:end
echo Done.

Så här kan du använda batfilen:
Kod:
SeekText "test.se" "test.se/test/hej/pelle"

Senast redigerad av Conny Westh den 2013-03-19 klockan 00:19
Conny Westh är inte uppkopplad   Svara med citatSvara med citat
Oläst 2013-03-19, 07:33 #3
spyvingen spyvingen är inte uppkopplad
Medlem
 
Reg.datum: Jan 2006
Inlägg: 245
spyvingen spyvingen är inte uppkopplad
Medlem
 
Reg.datum: Jan 2006
Inlägg: 245
Tack så mycket.
En fråga bara om jag nu kör seektext i min andra bat fil hur kan jag få ut ett värde till mitt script att jag skall tex. göra något om seektext ger ett visst värde.

if SeekText "test.se" "test.se/test/hej/pelle" == 1 goto gåvidare

skulle man kunna köra något liknande spånar bara nu då jag är helt noob på detta och då bara se till att seektext ger 1 när pattern är hittat?
spyvingen är inte uppkopplad   Svara med citatSvara med citat
Oläst 2013-03-19, 09:31 #4
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Jag har tänkt att du ska ta SeekText.bat och kopiera till din egen bat-fil som du modifierar precis som du vill ha den.

Kärnan i SeekText.bat är att den anropar DOS-kommandot FindStr, det är den filen som egentligen gör jobbet och sen kollar man innehållet i variabeln errorlevel som kan vara 0 om den hittar texten eller 1 om den inte hittar den. Sen hoppar den till två olika lablar beroende på om den hittade eller inte i dessa lablar kan du skriva vad du vill göra.

Man kan utveckla detta vidare ganska långt men jag vet inte vad du egentligen vill göra i slutändan så det kan finnas många möjligheter utöver det jag visat.

Det går givetvis att korta ner bat-filen till ett minimum:

Kod:
@echo off
::
: SeekText.bat - Test if pattern in string
: Param1 - the pattern
: Param2 - the string to check
::

echo.%2 | findstr /C:"%1" 1>nul

if errorlevel 1 (
  echo. Returnerade 1 - pattern not found - Do what you want here
) ELSE (
  echo. Returnerade 0 - found pattern - Do what you want here
)

Senast redigerad av Conny Westh den 2013-03-19 klockan 09:38
Conny Westh är inte uppkopplad   Svara med citatSvara med citat
Oläst 2013-03-19, 09:38 #5
spyvingen spyvingen är inte uppkopplad
Medlem
 
Reg.datum: Jan 2006
Inlägg: 245
spyvingen spyvingen är inte uppkopplad
Medlem
 
Reg.datum: Jan 2006
Inlägg: 245
ahh nu är jag med trodde du menade att jag skulle anropa den men att lägga in i min befintliga fungerar ju lika bra Har inte tänkt så långt

Skall testa lite tack för din hjälp
spyvingen är inte uppkopplad   Svara med citatSvara med citat
Oläst 2013-03-19, 09:59 #6
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Här är en variant som innehåller exakt de två variabler du skrev om i ditt första inlägg:

Kod:
@echo off
::
: SpyVingen.bat - Test if pattern in string
: str1 - the pattern
: str2 - the string to check
::

set str1 = "test.se/test/hej/pelle"
set str2 ="test.se"

echo.%str2% | findstr /C:"%str1%" 1>nul

if errorlevel 1 (
  echo. Returnerade 1 - pattern not found - Do what you want here
) ELSE (
  echo. Returnerade 0 - found pattern - Do what you want here
)
Conny Westh är inte uppkopplad   Svara med citatSvara med citat
Oläst 2013-03-19, 10:22 #7
spyvingen spyvingen är inte uppkopplad
Medlem
 
Reg.datum: Jan 2006
Inlägg: 245
spyvingen spyvingen är inte uppkopplad
Medlem
 
Reg.datum: Jan 2006
Inlägg: 245
Fick ihop det precis som jag ville tack så mycket för din hjälp
spyvingen är inte uppkopplad   Svara med citatSvara med citat
Oläst 2013-03-19, 11:35 #8
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Såg att jag klantat till syntaxen lite i mitt förra inlägg, så här ska det se ut:

Kod:
@echo off
::
: SpyVingen.bat - Test if pattern in string
: str1 - the pattern
: str2 - the string to check
::

set str1=test.se/test/hej/pelle
set str2=test.se

rem Tänk på att ange \ som [\\] eller som \\\\ i sökmönstret enligt odokumenterad suntax för FindStr: http://stackoverflow.com/questions/8844868/what-are-the-undocumented-features-and-limitations-of-the-windows-findstr-comman


rem Med litteraler
rem echo. %str1% | findstr /L /i /C:%str2% 1>nul

rem med Regular expression
echo. %str1% | findstr /R /i /C:%str2% 1>nul


if errorlevel 1 (
  echo. Returnerade 1 - pattern [%str2%] not found in string [%str1%] - Do what you want here
) ELSE (
  echo. Returnerade 0 - found pattern [%str2%] in string [%str1%] - Do what you want here
)
Conny Westh är inte uppkopplad   Svara med citatSvara med citat
Oläst 2013-03-19, 12:38 #9
spyvingen spyvingen är inte uppkopplad
Medlem
 
Reg.datum: Jan 2006
Inlägg: 245
spyvingen spyvingen är inte uppkopplad
Medlem
 
Reg.datum: Jan 2006
Inlägg: 245
Ahh tack slapp använda det då jag inte skriver ut \ i strängen utan bara läser in en stäng och jämför med en utan \ men tack för att du skrev det iaf.

Citat:
Ursprungligen postat av ConnyWesth Visa inlägg
Såg att jag klantat till syntaxen lite i mitt förra inlägg, så här ska det se ut:

Kod:
@echo off
::
: SpyVingen.bat - Test if pattern in string
: str1 - the pattern
: str2 - the string to check
::

set str1=test.se/test/hej/pelle
set str2=test.se

rem Tänk på att ange \ som [\\] eller som \\\\ i sökmönstret enligt odokumenterad suntax för FindStr: http://stackoverflow.com/questions/8844868/what-are-the-undocumented-features-and-limitations-of-the-windows-findstr-comman


rem Med litteraler
rem echo. %str1% | findstr /L /i /C:%str2% 1>nul

rem med Regular expression
echo. %str1% | findstr /R /i /C:%str2% 1>nul


if errorlevel 1 (
  echo. Returnerade 1 - pattern [%str2%] not found in string [%str1%] - Do what you want here
) ELSE (
  echo. Returnerade 0 - found pattern [%str2%] in string [%str1%] - Do what you want here
)
spyvingen är inte uppkopplad   Svara med citatSvara med citat
Oläst 2013-03-19, 12:41 #10
spyvingen spyvingen är inte uppkopplad
Medlem
 
Reg.datum: Jan 2006
Inlägg: 245
spyvingen spyvingen är inte uppkopplad
Medlem
 
Reg.datum: Jan 2006
Inlägg: 245
Eftersom du ändå är har så har jag en liten fråga mitt första utdrag av scriptet så hade jag i början set namn = %1 tex men jag kunde aldrig få det att funka genom att använda %namn% efter detta.

Vad kan det bero på får det inte vara mellanslag eller nått eller vad kan gått fel. Mina variabler blev bara tomma.
spyvingen är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 15:55.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017