Компьютерный форум 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=132495)

samael82 19-02-2009 15:38 1043228

Логгирование операций с файлами
 
Здраствуйте, уважаемые!
У меня такой вопрос возник и не могу решить уже долгое время. Просто до банальщины: переносим скрипт из Линукса на Виндовс. Для этого я выбрал Powershell, не зная ещё какая загвоздка меня ждёт. Значит копирую я файлы по маске таким скриптом:
$codes = "001","002","004"
Foreach ($d in $codes)
{Copy-Item .\[Aa]*.$d -Destination $d\}
Как мне прологгировать эти операции в файл, чтобы в логе получилось что-то вроде
Files $filename was copied from $sourcename to $destname at hh:mm:ss dd-mm-yyyy.
на каждый скопированный объект?

D_Master 19-02-2009 17:10 1043297

samael82, а почему бы не на CMD?
Код:

@echo off
set log=log.txt
For %%I In ("C:\1\*.*") Do (
    Copy %%I C:\2\*.* > nul
    Echo File %%I was copied from C:\1 to C:\2 at %time% %date%>>%log%
 )


samael82 19-02-2009 17:28 1043323

Потому что у меня десяток масок вида [Aa]*.$d, $d.err и т.п., и каждый файл должен попасть в папку, заданную в $d
(то есть ааа.001 в папку 001, а 002.err в 002). Ни о каких *.* речь не идёт.
Если ты сможешь написать ТАКОЕ на шелле, то давай обсудим, я сам хотел поначалу да резко обломался :)

amel27 20-02-2009 05:20 1043712

Цитата:

Цитата samael82
давай обсудим »

если в имени только ASCII можно попробовать, измененный вариант D_Master'а:
Код:

@Echo Off

Set $log=log.txt
Set $codes=001,002,004

For %%a In (%$codes%) Do (
    For /F "Delims=" %%i In ('DIR /B /A:-D .\*^|FindStr /BRC:"[aA]*\.%%a"') Do (
        If Not Exist %%a\ MD %%a\
        Copy "%%i" %%a\ > nul
        Echo File "%%~nxi" was copied from "%%~dpi" to "%%a\" at %time% %date%>>%$log%
    )
)



Время: 12:13.

Время: 12:13.
© OSzone.net 2001-