Войти

Показать полную графическую версию : [решено] Создание CSV файла


Miravild
03-11-2013, 23:19
Вечер добрый коллеги!
Есть задача создания CSV или TXT файла, который содержит: "Data Created" (Дата создания файла), "File Version" (версия файла) и "Description" (Описание файла) EXE файлов содержащихся в папке. Получается 3 столбца.
К примеру:

rem *******************
rem Записываем в CSV файл
rem *******************
@echo off
setlocal EnableDelayedExpansion

(
echo "Name", "Data Modified", "Data Created"
for %%f in (*.exe) do (
set "name=%%~nxf"
if not "!name!"=="%~nx0" (
set "mtime=%%~tf"
for /f "tokens=1-3" %%d in (
'dir /t:c "!name!" ^| find /i "!name!"'
) do set "ctime=%%~d %%~e"
echo "!name!", !mtime!, !ctime!, !filver!
)
)
) > Cont.csv

Foreigner
03-11-2013, 23:55
Powershell

$files = @()

gci C:\Windows\*.exe | % {

$files += new-object psobject -property $( [ordered] @{

Name = $($_.VersionInfo.FileName)
Time = $($_.CreationTime)
Version = $($_.VersionInfo.FileVersion)
Description = $($_.VersionInfo.FileDescription)
})
}

$files | export-csv .\files.csv -encoding default

Miravild
04-11-2013, 00:48
Благодарю за ответ Foreigner
(Лучше, конечно, bat\batch файл, поскольку не сталкивался со скриптовым языком Powershell).
При запуске скрипта выдаёт ошибку (см. файл)

Iska
04-11-2013, 01:07
Лучше, конечно, bat\batch файл, поскольку не сталкивался со скриптовым языком Powershell »
Фокус не удастся, поскольку нет возможности определять версию файла кроме как сторонней утилитой.

При запуске скрипта выдаёт ошибку (см. файл) »
Как разрешить выполнение скриптов PowerShell - Поиск в Google (https://www.google.ru/search?q=%D0%BA%D0%B0%D0%BA+%D1%80%D0%B0%D0%B7%D1%80%D0%B5%D1%88%D0%B8%D1%82%D1%8C+%D0%B2%D1%8B%D0%B F%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5+%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%BE%D0%B2+PowerSh ell).

Foreigner
04-11-2013, 08:43
Miravild, У вас наверное PowerShell v2.0 ? Извиняюсь, не подумал, тогда измените:

$files = @()

gci C:\Windows\*.exe | % {

$files += new-object psobject -property @{

Name = $($_.VersionInfo.FileName)
Time = $($_.CreationTime)
Version = $($_.VersionInfo.FileVersion)
Description = $($_.VersionInfo.FileDescription)
}
}

$files | select Name, Time, Version, Description | export-csv .\files.csv -encoding default

Miravild
04-11-2013, 10:07
День добрый коллеги!
Установлен PowerShell V2 CTP (beta)

Windows PowerShell
(C) Корпорация Майкрософт, 2009. Все права защищены.

PS C:\Users\> $host.version

Major Minor Build Revision
----- ----- ----- --------
2 0 -1 -1

По поводу
Как разрешить выполнение скриптов PowerShell - Поиск в Google.

Iska, если посмотреть прикреплённый файл, то ошибка в другом. Разрешение на запуск скрипта дал.
Конечно, перед тем, как спрашивать совета, посмотрел информацию в интернете.
Во-всяком случае, спасибо за ответ.

Miravild
04-11-2013, 10:22
Благодарю за скрипт Foreigner .
Небольшой нюанс.
Есть возможность убрать абсолютный путь, оставив, только название файла.
То, что получилось при выполнение.
Name,"Time","Version","Description"
C:\DebtControl\actions_log.exe,"21.03.2013 13:23:45","6.12.3.0","Лог действий"
C:\DebtControl\bank_portfolio-old.exe,"05.09.2013 12:30:01","6.11.0.16","Банки и портфели"

Оставив только название файла:
Name,"Time","Version","Description"
actions_log.exe,"21.03.2013 13:23:45","6.12.3.0","Лог действий"
bank_portfolio-old.exe,"05.09.2013 12:30:01","6.11.0.16","Банки и портфели"

Foreigner
04-11-2013, 11:03
Miravild, Измените строку:

Name = $($_.Name)

Miravild
04-11-2013, 21:52
Благодарю Foreigner за помощь.

Iska
04-11-2013, 22:04
Iska, если посмотреть прикреплённый файл, то ошибка в другом. »
Miravild, прошу прощения, не доглядел до конца.




© OSzone.net 2001-2012