I'm trying to edit this code to show a spinner, the file name and total files moved updated for every hundred files moved. I have the spinner part worked out but I'm stuck getting the filenames and an accurate count. In this case I have 3,554 files but it stops at 3,500. I want to integrate it into another set of code that actually does the moving of the files. That code from Magoo is listed at the end of the post. So, to sum it all up, I just want a spinner that runs the whole time with the filenames showing on the same line as the spinner and the total number of files updating every 100 files and showing the correct total when all of the files have been processed.
Spinner Code
Code: Select all
@ECHO OFF
SETLOCAL
SET "sourcedir=C:\temp\xmls"
SET "spinChars=\|/-"
for /f %%a in ('"prompt $H&for %%b in (1) do rem"') do set "BS=%%a"
SET "filesmoved=0"
PUSHD "%sourcedir%"
For %%A in (*.xml) do set /a cnt+=1
Echo %cnt% files.
For /L %%I in (1,1,%cnt%) do (
set /a filesmoved += 1, hundred = filesmoved %% 100
setlocal enabledelayedexpansion
if !hundred! equ 0 call :spinner
endlocal
)
goto :EOF
:spinner
set "moved=%filesmoved%"
:spinner2
if %filesmoved% geq 400 set /a filesmoved -= 400 & goto :spinner2
set /a spinpos = filesmoved / 100
for /L %%I in (1,1,50) do set /P "=%BS%"<NUL
set /P "=Moving XML Files !spinChars:~%spinPos%,1! %moved% Files moved"<NUL
goto :EOF
Batch move XML Files
Code: Select all
@ECHO OFF
SETLOCAL
SET "sourcedir=U:\sourcedir\t w o"
PUSHD "%sourcedir%"
FOR /f "tokens=1*delims=" %%a IN (
'dir /b /a-d "%sourcedir%\*_*_*.xml" '
) DO SET "filename=%%a"&CALL :process
POPD
GOTO :EOF
:process
FOR /f "tokens=2,3,6delims=_" %%m IN ("%filename%") DO SET "date1=%%m"&SET "date2=%%n"&SET "whichdate=%%o"
IF DEFINED whichdate SET "date1=%date2%"
IF NOT DEFINED date2 GOTO :eof
ECHO(MD .\%date1:~0,4%\%date1:~4,2%
ECHO(MOVE "%filename%" .\%date1:~0,4%\%date1:~4,2%\
GOTO :EOF
And Here is the post that started it all.