 |
|
Логирование действия
Автоматизация чистки папки от одинаковых архивов. Ведется логирование.
Код:
setlocal enableextensions enabledelayedexpansion
set OUTPUT=logFile.txt
if "%STDOUT_REDIRECTED%" == "" (
set STDOUT_REDIRECTED=yes
cmd.exe /c %0 %* >>%OUTPUT%
exit /b %ERRORLEVEL%
)
pushd "%KudaArhiv%"
set sMaskFileArh="*.rar"
for /f "delims=" %%i in ('dir %sMaskFileArh% /b /a^:-d /o^-d') do (
if exist "%%i" (
set /a tekKol=!tekKol! + 1
set sParam="skip=!tekKol! delims="
call :MetkaCikl2 "%%i" !sParam! %sMaskFileArh%
)
)
popd
endlocal
exit /b 0
:MetkaCikl2
setlocal enableextensions enabledelayedexpansion
for /f %2 %%j in ('dir %3 /b /a^:-d /o^-d') do (
if "%%j" NEQ %1 (echo N|comp.exe %1 "%%j" 1>nul 2>nul && echo _совпадающие файлы %1 был удален=> "%%j" && del /f /q "%%j")
)
endlocal
exit /b 0
Вопрос 1.
Почему при коде
Код:
set sMaskFileArh="c:\arhiv\*.rar"
for /f "delims=" %%i in ('dir %sMaskFileArh% /b /a^:-d /o^-d') do (echo %%~fi)
в результате получается полный путь аналогичный %CD%\%%i вместо c:\arhiv\%%i
Вопрос 2.
Каким образом включить в лог строку echo _совпадающие файлы %1 был удален=> "%%j"
которая, как я понимаю, была выключена посредством предыдущей команды 1>nul
|
Вопрос 2 отпал путем удаления символа " >"
то есть вместо
Код:
echo _совпадающие файлы %1 был удален=> "%%j"
нужно
Код:
echo _совпадающие файлы %1 был удален "%%j"
|
по второму вопросу рекомендуют добавить /s
то есть должно быть
Код:
set sMaskFileArh="c:\arhiv\*.rar"
for /f "delims=" %%i in ('dir %sMaskFileArh% /s /b /a^:-d /o^-d') do (echo %%~fi)
либо использовать pushd и popd
Код:
set sMaskFileArh=*.rar
set sPath=c:\arhiv
pushd %sPath%
for /f "delims=" %%i in ('dir "%sMaskFileArh%" /b /a^:-d /o^-d') do (echo %%~fi)
popd
|
Время: 20:55.
© OSzone.net 2001-