I am fairly new to writing batch scripts. I am trying to write a script file to achieve the following task.
I have a source safe command below to get the list of files changed between two dates
ss.exe history $/myproject -Vd04/01/2012~01/01/2012 -R
The output of the above command is as follows
Building list for $/myproject.......................................................
....................................................................................
...................................
***** AllPages.master *****
Version 67
User: user1 Date: 1/12/12 Time: 1:08p
Checked in $/myproject/websites/website1
Comment:
***** AdminTSSetup.aspx.vb *****
Version 10
User: user2 Date: 1/12/12 Time: 1:09 p
Checked in $/myproject/websites/website1
Comment:
With the output above, I want to read the file name (allpages.master, AdminTsSetup.aspx.vb) and version of each file from the output and run the following command
SS diff -DS <filename from output> -V<version from output - 1>~<version from output>
Basically, I was trying to compare the previous version with the current version for each file in the output.
Can some one please help?
This should give you what you asked for. But it seems like the diff command you specified is missing a reference to the project.
This solution should work even if the file name contains spaces, !, ;, or any special characters like & or ^.
@echo off
setlocal disableDelayedExpansion
for /f "delims=*" %%A in ('ss.exe history $/myproject -Vd04/01/2012~01/01/2012 -R ^| findstr /b "***** Version"') do (
set "ln=%%A"
setlocal enableDelayedExpansion
if "!ln:~0,1!"==" " (
for /f "eol=: delims=" %%F in ("!ln:~1!") do (
endlocal
set "file=%%~nxF"
)
) else (
for /f "tokens=2 delims= " %%V in ("!ln!") do (
set /a "version1=%%V, version0=version1-1"
ss.exe dif -DS "!file!" -V!version0!~!version1!
endlocal
)
)
)
Here is a version that adds the project information from the "Checked in" line
@echo off
setlocal disableDelayedExpansion
for /f "delims=*" %%A in ('ss.exe history $/myproject -Vd04/01/2012~01/01/2012 -R ^| findstr /b "***** Version Checked"') do (
set "ln=%%A"
setlocal enableDelayedExpansion
if "!ln:~0,1!"==" " (
for /f "eol=: delims=" %%F in ("!ln:~1!") do (
endlocal
set "file=%%~nxF"
)
) else if "!ln:~0,1!"=="V" (
for /f "tokens=2 delims= " %%V in ("!ln!") do (
endlocal
set /a "version1=%%V, version0=version1-1"
)
) else (
for /f "tokens=2* delims= " %%B in ("!ln!") do (
endlocal
set "proj=%%C"
setlocal enableDelayedExpansion
ss.exe dif -DS "!proj!/!file!" -V!version0!~!version1!
endlocal
)
)
)