Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Логирование действия (http://forum.oszone.net/showthread.php?t=170308)

kosmo 16-03-2010 10:12 1369700

Логирование действия
 
Автоматизация чистки папки от одинаковых архивов. Ведется логирование.

Код:

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

kosmo 16-03-2010 12:04 1369766

Вопрос 2 отпал путем удаления символа ">"
то есть вместо
Код:

echo _совпадающие файлы %1 был удален=> "%%j"
нужно
Код:

echo _совпадающие файлы %1 был удален "%%j"

kosmo 24-03-2010 16:23 1376157

по второму вопросу рекомендуют добавить /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.

Время: 20:55.
© OSzone.net 2001-