Search code examples
scriptingbatch-filescripting-language

Batch: for /f +xcopy output - Save to .log


I have the next script, and I need it to save all the xcopy files copy outputs to one log file,

:tmdeploy
title Deploying Edithor - %deployer%
set src_folder=S:\ApliTelinver\Compilacion\Edithor 10.5\CompilacionQA
set dst_folder=S:\ApliTelinver\Ambientes-Edithor\Sincronizacion\Test\Test-Mantenimiento
set filelist=filelist-tm.txt
echo Origen: %src_folder%
echo Destino: %dst_folder%
echo.
REM for /f %%i in (%filelist%) DO xcopy /S/E/U/Y "%src_folder%\%%i" "%dst_folder%" > "%dd%.log"
for /f "delims=" %%i in (%filelist%) do (
    xcopy /S/E/U/Y "%src_folder%\%%i" "%dst_folder%" > "%dd%.log"
)
echo.
pause
goto end

The problem is that I only get the last file copy in the output. And how to properly do a timestamp for .log file?

Thank you


Solution

  • You should use the appended redirection operator, >> instead of >.

    So, your for loop will look like this:

    REM for /f %%i in (%filelist%) DO xcopy /S/E/U/Y "%src_folder%\%%i" "%dst_folder%" >> "%dd%.log"
    for /f "delims=" %%i in (%filelist%) do (
        xcopy /S/E/U/Y "%src_folder%\%%i" "%dst_folder%" >> "%dd%.log"
    )