Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

[Script] Выполнение команды для каждого элемента списка
Goto page Previous  1, 2, 3  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
Dimsok



Joined: 17 Aug 2014
Posts: 578

Post (Separately) Posted: Thu Oct 30, 2014 22:01    Post subject: Reply with quote

Спасиб, поробую, просто об этом нигде не написано. Кроме тебя на этом форуме все вымерли

Добавлено спустя 6 минут:

Кстати, че то с "%T" не удается использовать. В винраре только. А вот например с этим

TOTALCMD#BAR#DATA
"c:\Program Files\Total Commander\Utils\WHS\MultiRun.vbs"
01 "%%COMMANDER_PATH%%\Plugins\exe\balabolka\lame.exe" {{%WL}} --priority -b 64 -h --tt "{{%WL}}.mp3
%COMMANDER_PATH%\Plugins\exe\balabolka\lame.exe
Convert all wav to mp3

1
-1

Пробовал вышеуказанный параметр c {{%WL}}- игнорит напрочь, даже ошибки нет, все в той же панели все творит
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 12634
Location: Москва

Post (Separately) Posted: Thu Oct 30, 2014 22:35    Post subject: Reply with quote

Dimsok wrote:
"{{%WL}}" --priority -b 64 -h --tt "{{%WL}}.mp3"
Question

Dimsok wrote:
Кроме тебя на этом форуме все вымерли
На подфоруме. Не все знают что ответить либо не успевают, когда могут. Smile
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Dimsok



Joined: 17 Aug 2014
Posts: 578

Post (Separately) Posted: Thu Oct 30, 2014 22:54    Post subject: Reply with quote

Ну я конкретно не про ответ, а вообще, про активность. Вернее, про её отсутсвие
Back to top
View user's profile Send private message
Dimsok



Joined: 17 Aug 2014
Posts: 578

Post (Separately) Posted: Fri Oct 31, 2014 13:29    Post subject: Reply with quote

Не пойму, что не так

-i "{{%WL}}" -o "%t{{%WF}}.divx"

Работает только с именами файлов без пробелов. В текущей панели нормально без пробелов работает. Если только вместо F не подставить f, но тогда имена файлов на выходе каверкаются.

И вообще я так понял, что кавычки с {{ не обязательны. Если с пробелами работает, так и без них нормально, если нет, то все равно не помогают

И как бы организовать удаление исходников. Что то типа && del /f /q "{{%WL}}"" не помогает
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 12634
Location: Москва

Post (Separately) Posted: Fri Oct 31, 2014 18:39    Post subject: Reply with quote

Dimsok wrote:
-i "{{%WL}}" -o "%t{{%WF}}.divx"
А почему %t, а не %T?
Dimsok wrote:
И как бы организовать удаление исходников.
Не хочу чужой код ковырять, пусть Batya сам при желании добавит опцию.
Dimsok wrote:
Что то типа && del /f /q "{{%WL}}"" не помогает
И не поможет, это не cmd.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Dimsok



Joined: 17 Aug 2014
Posts: 578

Post (Separately) Posted: Fri Oct 31, 2014 18:54    Post subject: Reply with quote

С %T пробовал, но пути с пробелами не видит

Имена файлов без расширений тоже никак нельзя сделать?
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 12634
Location: Москва

Post (Separately) Posted: Fri Oct 31, 2014 19:44    Post subject: Reply with quote

Нужно модифицировать код в любом случае.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2199
Location: Москва, Россия

Post (Separately) Posted: Fri Nov 14, 2014 13:18    Post subject: Reply with quote

Dimsok
Что-то вы тут с Flasher накрутили...
Вообщем, поменяй для теста в скрипте
Code:
  'Тестовая строка - раскомментарить для проверки
  'MsgBox L, vbOKOnly, Mess(5)
  WSH.Run L, 7, (Mode(1) = 0)
на
Code:
  'Тестовая строка - раскомментарить для проверки
  MsgBox L, vbOKOnly, Mess(5)
  'WSH.Run L, 7, (Mode(1) = 0)

Играй параметрами и смотри, что в итоге у тебя хочет запускаться. По результатам экспериментов, если у самого ничего путного не выйдет, обращайся.
Dimsok wrote:
И как бы организовать удаление исходников. Что то типа && del /f /q "{{%WL}}"" не помогает

Как верно заметил Flasher, это не cmd. Но, как раз, запуск cmd может помочь - попробуй в параметрах вызывать не "01 "%%COMMANDER_PATH%%\Plugins\exe\balabolka\lame.exe" ...", а "01 cmd "%%COMMANDER_PATH%%\Plugins\exe\balabolka\lame.exe" ...". А потом уже "&& del ...".
Кстати, можно посмотреть пример использования с удалением здесь.

P.S. На форуме бываю редко, т.ч. быстрый ответ не обещаю.
_________________
Нет, я не сплю. Я просто медленно моргаю.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 12634
Location: Москва

Post (Separately) Posted: Fri Nov 14, 2014 18:19    Post subject: Reply with quote

Batya wrote:
Что-то вы тут с Flasher накрутили...
Да я ничего тут не крутил. Smile
Batya wrote:
Но, как раз, запуск cmd может помочь
А с этим-то он как поможет?:
Dimsok wrote:
Имена файлов без расширений
Такое прокатит?: "%%~n{{%WF}}.mp3"
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2199
Location: Москва, Россия

Post (Separately) Posted: Sat Nov 15, 2014 10:42    Post subject: Reply with quote

Flasher wrote:
А с этим-то он как поможет?:

А вот для этого я и писал:
Batya wrote:
Вообщем, поменяй для теста в скрипте
...
Играй параметрами и смотри, что в итоге у тебя хочет запускаться.

_________________
Нет, я не сплю. Я просто медленно моргаю.
Back to top
View user's profile Send private message
Dimsok



Joined: 17 Aug 2014
Posts: 578

Post (Separately) Posted: Sat Nov 15, 2014 17:17    Post subject: Reply with quote

Batya wrote:

Вообщем, поменяй для теста в скрипте
Code:
  'Тестовая строка - раскомментарить для проверки
  'MsgBox L, vbOKOnly, Mess(5)
  WSH.Run L, 7, (Mode(1) = 0)
на
Code:
  'Тестовая строка - раскомментарить для проверки
  MsgBox L, vbOKOnly, Mess(5)
  'WSH.Run L, 7, (Mode(1) = 0)



Чего-то я не вижу разницы. И для какой это цели? Это должно помочь читать имен файлов без расширений?

Добавлено спустя 3 минуты:

Аа, понял, поменять ' местами. А что это должно изменить?
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 12634
Location: Москва

Post (Separately) Posted: Sat Nov 15, 2014 18:22    Post subject: Reply with quote

Dimsok wrote:
А что это должно изменить?
Написано же - для проверки. Покажет запись комстроки.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Victor_Dobrov



Joined: 15 Jul 2008
Posts: 50

Post (Separately) Posted: Wed Apr 13, 2016 04:08    Post subject: Reply with quote

Небольшая доработка, можно не указывать режим, и можно задать число одновременно выполняемых задач (по числу ядер процессора)
 Hidden text
Back to top
View user's profile Send private message
Avada



Joined: 01 Aug 2008
Posts: 8953
Location: Россия, Саратов

Post (Separately) Posted: Wed Apr 13, 2016 08:05    Post subject: Reply with quote

Victor_Dobrov
Для скриптов такого размера на форуме лучше применять спойлеры! Исправлено.
_________________
Даже самая богатая фантазия
Не представит себе наши безобразия.
Back to top
View user's profile Send private message
helb



Joined: 08 Oct 2014
Posts: 52

Post (Separately) Posted: Tue Nov 22, 2016 16:29    Post subject: Reply with quote

Вариация на powershell. Поддерживает regex и параллельное выполнение. Главный плюс, дает манипулировать входными данными (простейшее, использовать входное имя файла в качестве выходного). В сущности лист может представлять собой любые однотипные строки на манер CSV.
Code:
<#   MultiRun [by helb] v2016-11-05
   Launches specified command for every item in a list (file paths or any arbitrary data in lines). Supports RegEx.

   Command line usage: powershell <this script pathname> <listfile> [-re '<regex with capture groups>'] [-threads <number>] <command with parameters>
   Captured groups should be represented in command with number after ‘:::’ signs (e.g. ‘:::2’)
   Any ‘"’ characters inside command arguments should be escaped with ‘\"’, arguments containing ‘$’ single quoted (with apostrophes) and ‘&’ enclosed like '"<text with &>"' (e.g. '"-arg=\"weird&unu$ual\""')
   Total Commander file list parameter: %UL

   Запускает указанную команду для каждой записи в списке (пути файлов или любые произвольные данные строками). Поддерживает RegEx.
   Использование: powershell <путь скрипта> <лист-файл> [-re '<regex включая capture-группы>'] [-threads <число>] <команда с параметрами>
   Захваченные группы из регулярного выражения должны быть представлены в команде в виде «:::номер» (например «:::2»)
   Любые символы «"» внутри аргументов команды требуется представить в виде «\"», аргументы содержащие «$» заключить в апострофы, «&» — заключить '"подобным образом"' (например: '"-arg=\"weird&unu$ual\""')
   Параметр в Total Commander для списка файлов: %UL
   
   Example, mux youtube video in separate video (.mp4) and audio (.m4a) dash-files into normal mp4 container:
   powershell MultiRun.ps1 video-only-files-list.txt -threads 4 -re '(.+)\.mp4$' ffmpeg -i ":::0" -i ":::1.m4a" -c copy -map 0:v:0 -map 1:a:0 ":::1~.mp4"
#>
Param
(
   [parameter(Position=0, Mandatory=$true)][string]$list,
   [string]$re,
   [int]$threads,
   [parameter(ValueFromRemainingArguments=$true)][string[]]$arguments
)

[System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")

function msgBx($text, $title, $btns = 0) {
   return [System.Windows.Forms.MessageBox]::Show($text, $title, $btns)
}

if (!$list) { msgBx "No list specified." "Error"; return }
if (!$threads -or $threads -lt 1) {$threads = 1}

$list = [environment]::ExpandEnvironmentVariables($list)
if (!(test-path -literalPath $list)) { msgBx "List file not found." "Warning"; return }
$i = 0
foreach ($a in $arguments) {
   if (($a -match '\s' -and $a -notmatch '^".+"$') -or $a -match ':::\d') {
      $arguments[$i] = '"' + $a + '"'
   }
   $i++
}
$arguments

[string]$clinebase = $arguments[1..($arguments.length-1)] -join ' '
$clinebase
$jobs = @()
for ($i = 0; $i -lt $threads; $i++) {
   $jobs += $null
}
get-content $list | foreach {
   $cline = $clinebase -replace ':::0', $_
   if ($re -and $_ -match $re) {
      for ($i = 1; $i -lt $matches.count; $i++){
         $cline = $cline.replace(':::' + $i, $matches[$i])
      }
   }
   $cline
   do {
      $launched = $false
      for ($i = 0; $i -lt $threads; $i++) {
         if ($jobs[$i] -eq $null -or $jobs[$i].HasExited) {
            $jobs[$i] = Start-Process $arguments[0] -PassThru -ArgumentList $cline
            $launched = $true
            break
         }
      }
      if (!$launched) { Start-Sleep -m 100 }
   } until ($launched)
}
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander All times are GMT + 4 Hours
Goto page Previous  1, 2, 3  Next
Page 2 of 3

 
Jump to:  
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