View previous topic :: View next topic |
Author |
Message |
carlsonn
Joined: 04 Nov 2007 Posts: 11
|
(Separately) Posted: Sun Nov 04, 2007 17:34 Post subject: Пакетное создание папок или файлов |
|
|
Заранее прошу прощения, за поднятие уже обговариваемой темы, но все же, есть некоторые предложения, а точнее просьба.
Ув. модераторы, просьба перенести топик в нужный раздел, если посчитаете нужным
Собственно... Часто возникает необходимость в создании большого количества папок или файлов, само собой, просто так, вручную, это сделать довольно сложно, приходится прибегать к разному виду программ, которых, кстати, не так уж много, а точнее можно пересчитать по пальцам, но все они не в полной мере выполняют необходимые функции. Поэтому есть необходимость в создании такого скрипта, а лучше это будет смотреться в плагине.
Так вот, было бы неплохо иметь плагин/скрипт для пакетного создания файлов/папок с выполнением некоторых условий:
- указание директории, куда будут генерироваться файлы/папки;
- создание по маске, тобеж задаем общее для всех имя (файла/папки) и в конце/начале (либо другие вариации) подставляем число/букву с интервалом "от" и "до". В результате: Папка1, Папка2, ...., Папка999.
- также создание числового имени файлов/папок. "от" и "до", при этом можно задавать шаг, тобеж делать имена вида: 00001.txt, 00002.txt и так далее;
- создание папок/файлов по списку из указанного файла;
- возможность вписать любое расширение для создаваемого файла;
- + можно сразу предусмотреть вставку текста/кода в создаваемые файлы (например пригодится для вебмастеров);
- также можно предусмотреть создание рандомных имен (числовых, буквенных или микст);
- также можно внедрить и другие алгоритмы, которые обсуждались уже - создание с подкаталогами и т.д.
Имхо можно использовать макросы, типа {name}, {N}, {ext}.
Ну пока идеи закончились. Думаю такая фича пригодится многим и вы останетесь довольны своим детищем, ну и мы тоже
Все возможные предложения приветствуются!!! Спасибо! |
|
Back to top |
|
|
DrShark
Joined: 21 Oct 2006 Posts: 911 Location: Kyiv, Ukraine
|
(Separately) Posted: Sun Nov 04, 2007 20:12 Post subject: |
|
|
Quote: | - указание директории, куда будут генерироваться файлы/папки;
- создание по маске, тобеж задаем общее для всех имя (файла/папки) и в конце/начале (либо другие вариации) подставляем число/букву с интервалом "от" и "до". В результате: Папка1, Папка2, ...., Папка999.
- также создание числового имени файлов/папок. "от" и "до", при этом можно задавать шаг, тобеж делать имена вида: 00001.txt, 00002.txt и так далее;
- создание папок/файлов по списку из указанного файла;
- возможность вписать любое расширение для создаваемого файла;
- + можно сразу предусмотреть вставку текста/кода в создаваемые файлы (например пригодится для вебмастеров);
- также можно предусмотреть создание рандомных имен (числовых, буквенных или микст);
- также можно внедрить и другие алгоритмы, которые обсуждались уже - создание с подкаталогами и т.д. |
С этоими задачами справится любой скриптовый язык програмирования. Тот же VBScript.
Quote: | Имхо можно использовать макросы, типа {name}, {N}, {ext} | Для уже созданных папок/файлов можно использовать инструмент группового переименования, в котором всё это есть.
Единственное, что можно добавить a TC, это поле для вставки количества копий файла/папки. Это тоже реализуется скриптом, ко в тотале уже есть преднастройки для автоматического переименования и т.д., так что это поле лишним небыло бы. |
|
Back to top |
|
|
carlsonn
Joined: 04 Nov 2007 Posts: 11
|
(Separately) Posted: Sun Nov 04, 2007 23:31 Post subject: |
|
|
DrShark wrote: |
С этоими задачами справится любой скриптовый язык програмирования. Тот же VBScript. |
В том, что, с этими задачами справится любой язык я и не сомневался.
Дело ведь в том, чтобы все это было реализовано в одном месте.
Вы же когда идете в кафе, хотите там выпить водочки и закусить, а не бежать в рюмочную за 100-кой, и в магаз за закусью. Ведь не логично же. Сори за такой пример.
Плюс, большинство пользователей (в т.ч. и я) имеют весьма поверхностное представление о всех этих тонкостях, но работать нормально ведь всем хочется. Поэтому они и обращаются за помощью к специалистам. |
|
Back to top |
|
|
Bishop
Joined: 15 May 2007 Posts: 98
|
(Separately) Posted: Mon Nov 05, 2007 18:46 Post subject: |
|
|
carlsonn, Взять PowerShell, разобраться и пользоваться.
Quote: | - создание по маске, тобеж задаем общее для всех имя (файла/папки) и в конце/начале (либо другие вариации) подставляем число/букву с интервалом "от" и "до". В результате: Папка1, Папка2, ...., Папка999. |
Например командой: Code: | for ($i = 1; $i -le 10; $i++){New-Item -type file -name "Файл$i.txt"} | или Code: | foreach($n in 1..10){New-Item -type directory -name "Папка$n"} |
Quote: | создание папок/файлов по списку из указанного файла; |
Code: | Get-Content file.txt | ForEach-Object {New-Item $_ -type file -force} | Где file.txt - файл с именами создаваемых файлов по одному в строке.
PowerShell — штука очень простая и очень полезная — рекомендую.
Написание для таких целей чего-то самостоятельного, как минимум, не интересно. |
|
Back to top |
|
|
carlsonn
Joined: 04 Nov 2007 Posts: 11
|
(Separately) Posted: Mon Nov 05, 2007 22:31 Post subject: |
|
|
2 Bishop
Конечно спасибо Вам за подсказки и за линку.
Для изучения всего этого теперь нужно иметь время, которого к сожалению нет
Но целью этого отпика было все же получить работающую софтинку.
Жаль что никто не откликнулся.
Спасибо! |
|
Back to top |
|
|
Bishop
Joined: 15 May 2007 Posts: 98
|
(Separately) Posted: Fri Nov 16, 2007 15:04 Post subject: |
|
|
Написал парочку скриптов для PowerShell.
Разрешить PowerShell-у выполнять скрипты:
Set-ExecutionPolicy RemoteSigned
PS должен быть запущен с правами администратора. В 64-битной Windows нужно выполнить команду в обоих PS (TC будет запускать 32-битный).
carlsonn wrote: | - создание по маске, тобеж задаем общее для всех имя (файла/папки) и в конце/начале (либо другие вариации) подставляем число/букву с интервалом "от" и "до". В результате: Папка1, Папка2, ...., Папка999.
- также создание числового имени файлов/папок. "от" и "до", при этом можно задавать шаг, тобеж делать имена вида: 00001.txt, 00002.txt и так далее; |
Файл CreateFileSystemObjectsByMask.ps1
Code: | [void][reflection.assembly]::LoadWithPartialName("System.Windows.Forms")
$form = New-Object System.Windows.Forms.Form
$form.ClientSize = New-Object System.Drawing.Size(410, 90)
$form.MaximizeBox = $false
$form.MinimizeBox = $false
$form.Text = "Create FileSystem Objects"
$form.Font = [System.Drawing.SystemFonts]::MessageBoxFont
$form.FormBorderStyle = "FixedDialog"
$form.Add_Shown({$form.Activate()})
[System.Windows.Forms.Application]::EnableVisualStyles()
$newtb = {New-Object System.Windows.Forms.TextBox}
$newlb = {New-Object System.Windows.Forms.Label}
$newbt = {New-Object System.Windows.Forms.Button}
$size = {New-Object System.Drawing.Size($args[0], $args[1])}
$point = {New-Object System.Drawing.Point($args[0], $args[1])}
# Copyright
$cr = New-Object System.Windows.Forms.LinkLabel
$cr.Location = &$point 10 65
$cr.Size = &$size 100 17
$cr.Text = '© 2007 Bishop'
$cr.Add_Click({[System.Diagnostics.Process]::Start('ma'+'ilt'+'o:'+$cr.Text.Split()[2]+[char]64+'tu'+'t.by')})
# Pattern
$info = &$newlb
$info.Location = &$point 10 10
$info.Size = &$size 220 17
$info.Text = 'Pattern ($c — counter, `$ — $ symbol):'
$txt = &$newtb
$txt.Location = &$point 10 30
$txt.Size = &$size 220 20
$txt.Text = '$c'
# Counter
$infoc = &$newlb
$infoc.Location = &$point 250 10
$infoc.Size = &$size 160 17
$infoc.Text = 'Counter: first; last; inc; width'
$tcb = &$newtb
$tce = &$newtb
$tci = &$newtb
$tcw = &$newtb
$tarr = $tcb, $tce, $tci, $tcw
$tarrt = 1, 10, 1, 0
$l, $w = 250, 40
for ($i = 0; $i -lt $tarr.Length; $i++)
{
$tarr[$i].Location = &$point $l 30
$tarr[$i].Size = &$size $w 20
$l += $w + 10
if ($i -eq 1) {$w /= 2}
$tarr[$i].Text = $tarrt[$i]
}
# Command
$btno = &$newbt
$btno.Location = &$point 250 60
$btno.Size = &$size 70 23
$btno.DialogResult = $btno.Text = "OK"
$btnc = &$newbt
$btnc.Location = &$point 330 60
$btnc.Size = &$size 70 23
$btnc.DialogResult = $btnc.Text = "Cancel"
# ToolTip
$tt = New-Object System.Windows.Forms.ToolTip
for ($i = 0; $i -lt 5; $i++)
{
$tt.SetToolTip(
@($txt, $tcb, $tce, $tci, $tcw)[$i],
@("Filename pattern (ends with backslash \ for folders)`nAfter `$c must be separator (comma, space, etc.), else use `$(`$c)", 'First value', 'Last value', 'Increment', 'Width (0 — auto)')[$i])
}
# Adding controls
$form.Controls.AddRange(@($txt, $info, $infoc, $tcb, $tce, $tci, $tcw, $cr, $btno, $btnc))
$form.AcceptButton = $btno
$form.CancelButton = $btnc
if ($form.ShowDialog() -eq [System.Windows.Forms.DialogResult]::OK)
{
$inc = [int] $tci.Text
$dw = [int] $tcw.Text
for ($i = [int] $tcb.Text; $i -le [int] $tce.Text; $i += $inc)
{
$c = $i.ToString("d$dw")
$path = $ExecutionContext.InvokeCommand.ExpandString($txt.Text)
if ($path.EndsWith("\")) {
$type = 'directory'
}
else {
$type = 'file'
}
if (-not (Test-Path $path)) {
New-Item -Name $path -type $type -Force
}
}
} |
Кнопка: Code: | TOTALCMD#BAR#DATA
powershell -noprofile -command E:\.bishop\pscr\CreateFileSystemObjectsByMask.ps1
wcmicons.dll,44
Create File System Objects By Mask
.
-1
|
$c — счетчик, но если после него не идёт разделитель (пробел, _, -, и т.д.), используйте запись $($c).
Можно так: $c\folder$c\file$c.ext$c.
Важно:
Проверка корректности вводимых данных не выполняется;
Существование файлов проверяется — не затрутся.
carlsonn wrote: | - создание папок/файлов по списку из указанного файла; |
Файл CreateFileSystemObjectsFromList.ps1
Code: | [void][reflection.assembly]::LoadWithPartialName("System.Windows.Forms")
[System.Windows.Forms.Application]::EnableVisualStyles()
$ofd = New-Object System.Windows.Forms.OpenFileDialog
if ($ofd.ShowDialog() -eq [System.Windows.Forms.DialogResult]::OK)
{
$paths = Get-Content $ofd.FileName
foreach ($path in $paths) {
if ($path.EndsWith("\")) {
$type = "directory"
}
else {
$type = "file"
}
if (-not (Test-Path $path)) {
New-Item -Name $path -type $type -Force
}
}
} |
Файл с именами содержит одно имя в строке. Существование файлов проверяется.
Кнопка: Code: | TOTALCMD#BAR#DATA
powershell -noprofile -command E:\.bishop\pscr\CreateFileSystemObjectsFromList.ps1
wcmicons.dll,44
Create File System Objects From List
.
-1
|
carlsonn wrote: | - указание директории, куда будут генерироваться файлы/папки; |
Файлы/папки будут создаваться в текущем каталоге, т.е. в том, который прописан в "Путь запуска" в параметрах кнопки TC.
Если путь завершается обратным слешом "\", это папка, иначе файл.
В кнопках пути к скриптам нужно исправить на свои. |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|