Discussion forum for all Windows batch related topics.
Moderator: DosItHelp
-
ghostmachine4
- Posts: 319
- Joined: 12 May 2006 01:13
#1
Post
by ghostmachine4 » 05 Apr 2011 08:52
Source:
Does String1 begin with String2Code being tested with slight modification ( on WinXP)
Code: Select all
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
set string1="ant"
set string2="testing"
set s=@@@%string1%
if "%s%"=="!s:@@@%string2%!=" (
echo.%string1% doesn`t begin with %string2%
) ELSE (
echo.%string1% begins with %string2%
)
on the command line
Code: Select all
C:\work>type test.bat
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
set string1="ant"
set string2="testing"
set s=@@@%string1%
if "%s%"=="!s:@@@%string2%!=" (
echo.%string1% doesnt begin with %string2%
) ELSE (
echo.%string1% begins with %string2%
)
C:\work>test.bat
"ant" begins with "testing"
clearly how can "ant" begins with "testing". Is it me, or is it a bug?
-
jeb
- Expert
- Posts: 1055
- Joined: 30 Aug 2007 08:05
- Location: Germany, Bochum
#2
Post
by jeb » 05 Apr 2011 13:19
Yes you are right, it's a bug in
http://www.dostips.com/DtCodeSnippets.php#Snippets.DoesString1StartWithString2 ( And I always fogot how to use the url-tag ).
But I didn't believe that you didn't found the bug
And of course batch is good for having fun, not for writing readable, good or big programs.
I used here my personal definition of fun, there could be persons who didn't share my definition.
jeb
-
DosItHelp
- Expert
- Posts: 239
- Joined: 18 Feb 2006 19:54
#3
Post
by DosItHelp » 05 Apr 2011 22:08
Fixed - thanks guys!
old:
if "%s%"=="!s:@@@%string2%
!=" (
new:
if "%s%"=="!s:@@@%string2%
=!" (
-
ghostmachine4
- Posts: 319
- Joined: 12 May 2006 01:13
#4
Post
by ghostmachine4 » 05 Apr 2011 22:23
DosItHelp wrote:Fixed - thanks guys! :D
ok, did i do something incorrect this time ?
Code: Select all
C:\work>type test.bat
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
set string1="testing"
set string2="test"
set s=@@@%string1%
if "%s%"=="!s:@@@%string2%=!" (
echo.%string1% doesnt begin with %string2%
) ELSE (
echo.%string1% begins with %string2%
)
C:\work>test.bat
"testing" doesnt begin with "test"
but "testing" does begin with "test". I think its just the echo part ?
-
DosItHelp
- Expert
- Posts: 239
- Joined: 18 Feb 2006 19:54
#5
Post
by DosItHelp » 05 Apr 2011 22:46
The double quotes are trouble.
5th character of string1 is not a double quote.
this should work:
set string1="test"ing
set string2="test"
or this:
set "string1=testing"
set "string2=test"
or this:
set string1=testing
set string2=test
or even this
set "string1="test"ing"
set "string2="test""
but unbalanced quotes however will cause trouble in the IF statement:
set "string1="testing"
set "string2="test"