I have the following string:
9/14/22 11:00:12,,,0,0,,,,,,
I need to remove "9/14/22 11:00:12" so I only have ,,,0,0,,,,,, left over.
@echo off
set str=9/14/22 11:00:12,,,0,0,,,,,,
FOR /F "tokens=1* delims=," %%a in ("%str%") DO (
set REMOVE_STR=%%a
)
set REMAINING_STR=%str:;%REMOVE_STR%;=%
echo New string: %REMAINING_STR%
The output is just the original string, so I know there's a problem with the substr removal step. But, I can't figure out what I'm doing wrong.
CodePudding user response:
You need delayed expansion to use variables inside a code block that you defined/changed within the same block:
@echo off
setlocal enabledelayedexpansion
set str=9/14/22 11:00:12,,,0,0,,,,,,
FOR /F "tokens=1 delims=," %%a in ("%str%") DO (
set "remaining_str=!str:%%a=!"
echo New string: !Remaining_Str!
)
Output:
New string: ,,,0,0,,,,,,
CodePudding user response:
You don't need a for
loop, or delayed expansion for that task, you can do it with direct variable expansion and sustitution, just like this:
@Echo Off
SetLocal EnableExtensions DisableDelayedExpansion
Set "str=9/14/22 11:00:12,,,0,0,,,,,,"
Set "REMAINING_STR=,%str:*,=%
Echo New string: %REMAINING_STR%
The above substitutes everything up to the first comma, with nothing, in the expanded variable, and precedes that with the initially first removed comma.