Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Составить список файлов из папки в заданном виде

Ответить
Настройки темы
CMD/BAT - [решено] Составить список файлов из папки в заданном виде

Новый участник


Сообщения: 7
Благодарности: 0

Профиль | Отправить PM | Цитировать


Дорого времени суток, великие и могучие!
Помогите пожалуйста. Как сделать батник, который из папки с файлами смог бы сформировать файл txt по следующему принципу:

В папке есть n количество файлов (оно всегда растет)

Необходимо в txt файле создать текст следующего формата:

Range("A1").Select
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="P:\files\название файла с расширением" _
, TextToDisplay:="P:\files\название файла с расширением"
Range("A2").Select
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="P:\files\название второго файла с расширением" _
, TextToDisplay:="P:\files\название второго файла с расширением"
.......................
Range("An").Select
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="P:\files\название n-ого файла с расширением" _
, TextToDisplay:="P:\files\название n-ого файла с расширением"

В этом случае "P:\files\" константа, которую можно задавать в зависимости от расположения файла перед запуском батника

ЛИБО

Range("A1").Select
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="название файла с расширением и путем к нему" _
, TextToDisplay:="название файла с расширением и путем к нему"
Range("A2").Select
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="название второго файла с расширением и путем к нему" _
, TextToDisplay:="название второго файла с расширением и путем к нему"
.............................
Range("An").Select
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="название n-ого файла с расширением и путем к нему" _
, TextToDisplay:="название n-ого файла с расширением и путем к нему"


Кому интересно для чего это мне необходимо. Я хочу потом данный текст скопировать в Макрос excel и создать файл с гиперссылками на файлы в папке, в которой этот батник будет запущен.
Непосредственно в excel не раздуплю как это сделать. Помогите пожалуйста. Или подскажите какой софт есть для автоматизации этого процесса.

Отправлено: 15:53, 28-09-2020

 

Аватара для Fors1k

Старожил


Сообщения: 193
Благодарности: 112

Профиль | Отправить PM | Цитировать


Цитата burolf:
создать файл с гиперссылками на файлы в папке »
Код: Выделить весь код
param(
    $pathFolder = 'C:\files',
    $pathXls    = 'C:\docs\links.xlsx' 
)cls

$Excel = New-Object -ComObject Excel.Application
$WorkBook  = $Excel.Workbooks.Add()
$WorkSheet = $WorkBook.Worksheets.Item(1)
gci $pathFolder -rec -file|%{$i=1}{  
    [void]$WorkSheet.Cells.Hyperlinks.Add(
        $workbook.Worksheets.Item(1).Cells.Item($i++,1),$_.FullName
    )
}
$Range = $WorkSheet.UsedRange
[void]$Range.EntireColumn.AutoFit()
$workBook.saveAs($pathXls);$excel.Quit()
[Runtime.InteropServices.Marshal]::ReleaseComObject($excel)

Последний раз редактировалось Fors1k, 28-09-2020 в 20:32. Причина: Добавлено ReleaseComObject

Это сообщение посчитали полезным следующие участники:

Отправлено: 17:03, 28-09-2020 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Забанен


Сообщения: 793
Благодарности: 260

Профиль | Цитировать


Fors1k, а кто экземпляр COM освободит? Хотя по идее это должен делать GC, в действительности этого никогда не произойдёт. Поэтому помимо прочего нужно вызвать ReleaseComObject после Quit ([Runtime.InteropServices.Marshal]::RealeaseComObject($excel)).
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:59, 28-09-2020 | #3


Новый участник


Сообщения: 7
Благодарности: 0

Профиль | Отправить PM | Цитировать


Я скопировал этот текст в батник, запустил, но файл не создался. Что я делаю не так? (

Отправлено: 09:51, 29-09-2020 | #4


Аватара для Elven

Ветеран


Сообщения: 992
Благодарности: 268

Профиль | Сайт | Отправить PM | Цитировать


Наверное, потому, что это не батник. Сохраните текст в файле с расширением ps1 и запускайте через powershell.
Это сообщение посчитали полезным следующие участники:

Отправлено: 10:45, 29-09-2020 | #5


Новый участник


Сообщения: 7
Благодарности: 0

Профиль | Отправить PM | Цитировать


Запустил код :

param(
$pathFolder = 'p:\file',
$pathXls = 'p:\links.xlsx'
)cls

$Excel = New-Object -ComObject Excel.Application
$WorkBook = $Excel.Workbooks.Add()
$WorkSheet = $WorkBook.Worksheets.Item(1)
gci $pathFolder -rec -file|%{$i=1}{
[void]$WorkSheet.Cells.Hyperlinks.Add(
$workbook.Worksheets.Item(1).Cells.Item($i++,1),$_.FullName
)
}
$Range = $WorkSheet.UsedRange
[void]$Range.EntireColumn.AutoFit()
$workBook.saveAs($pathXls);$excel.Quit()
[Runtime.InteropServices.Marshal]::ReleaseComObject($excel)

через powershell. Файл xlsx создался, УРА! но он пустой, там нет никаких ссылок. (

Выдает еще ошибку :

Get-ChildItem : Не удается найти параметр, соответствующий имени параметра "file".
строка:1 знак:27
+ gci $pathFolder -rec -file <<<< |%{$i=1}{
+ CategoryInfo : InvalidArgument: ( [Get-ChildItem], ParameterBindingException
+ FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand

Последний раз редактировалось burolf, 29-09-2020 в 11:33.


Отправлено: 11:24, 29-09-2020 | #6


Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


Цитата burolf:
текст скопировать в Макрос excel и создать файл с гиперссылками на файлы в папке »
чего не сразу из txt файла
Код: Выделить весь код
@echo off
set "spath=C:\Papka"

>file.txt (for /f "delims=" %%a in ('dir /a-d/b/s "%spath%\*.*"') do @set "f=%%a"& call echo file:///%%f:\=/%%)
pause
Забыл указать, текстовый редактор должен быть не штатный виндовый блокнот, а что-то посолиднее, иначе наверное не получится.

Последний раз редактировалось alpap, 29-09-2020 в 15:23.

Это сообщение посчитали полезным следующие участники:

Отправлено: 15:12, 29-09-2020 | #7


Новый участник


Сообщения: 7
Благодарности: 0

Профиль | Отправить PM | Цитировать


спасибо за участие, но при таком варианте просто создается txt файл с адресами на файлы и все. Как сделать именно гиперссылки внутри excel?

Отправлено: 15:37, 29-09-2020 | #8


Новый участник


Сообщения: 7
Благодарности: 0

Профиль | Отправить PM | Цитировать


спасибо за участие, но при таком варианте просто создается txt файл с адресами на файлы и все. Как сделать именно гиперссылки внутри excel?

Отправлено: 16:28, 29-09-2020 | #9


Аватара для Fors1k

Старожил


Сообщения: 193
Благодарности: 112

Профиль | Отправить PM | Цитировать


Цитата burolf:
Выдает еще ошибку »
Код: Выделить весь код
$host.Version.Major
Если покажет меньше пяти, то установите обновление:
https://www.microsoft.com/en-us/down....aspx?id=54616
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:20, 29-09-2020 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Составить список файлов из папки в заданном виде

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - копирования файлов из исходной папки в папки получатели согласно txt.файлу sevan_k Скриптовые языки администрирования Windows 3 12-06-2020 18:07
CMD/BAT - [решено] Нужно составить список файлов с определённым расширением и загонял его в TXT i-Lex Скриптовые языки администрирования Windows 4 28-02-2012 06:36
C/C++ - список файлов из папки - в листБокс Voffka123 Программирование и базы данных 1 18-05-2010 15:50
Помогите составить список всяких проблем с компами mitiya Флейм 12 28-04-2010 21:15
Список файлов при копировании папки i386 winxp rgsx Автоматическая установка Windows 2000/XP/2003 1 27-08-2009 15:12




 
Переход