[Script] Выполнение команды для каждого элемента списка
Select messages from
# through # FAQ
[/[Print]\]
Goto page Previous  1, 2, 3  Next  :| |:
Total Commander -> Автоматизация Total Commander

#16:  Author: Dimsok PostPosted: Thu Oct 30, 2014 22:01
    —
Спасиб, поробую, просто об этом нигде не написано. Кроме тебя на этом форуме все вымерли

Добавлено спустя 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}}- игнорит напрочь, даже ошибки нет, все в той же панели все творит

#17:  Author: FlasherLocation: Москва PostPosted: Thu Oct 30, 2014 22:35
    —
Dimsok wrote:
"{{%WL}}" --priority -b 64 -h --tt "{{%WL}}.mp3"
Question

Dimsok wrote:
Кроме тебя на этом форуме все вымерли
На подфоруме. Не все знают что ответить либо не успевают, когда могут. Smile

#18:  Author: Dimsok PostPosted: Thu Oct 30, 2014 22:54
    —
Ну я конкретно не про ответ, а вообще, про активность. Вернее, про её отсутсвие

#19:  Author: Dimsok PostPosted: Fri Oct 31, 2014 13:29
    —
Не пойму, что не так

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

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

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

И как бы организовать удаление исходников. Что то типа && del /f /q "{{%WL}}"" не помогает

#20:  Author: FlasherLocation: Москва PostPosted: Fri Oct 31, 2014 18:39
    —
Dimsok wrote:
-i "{{%WL}}" -o "%t{{%WF}}.divx"
А почему %t, а не %T?
Dimsok wrote:
И как бы организовать удаление исходников.
Не хочу чужой код ковырять, пусть Batya сам при желании добавит опцию.
Dimsok wrote:
Что то типа && del /f /q "{{%WL}}"" не помогает
И не поможет, это не cmd.

#21:  Author: Dimsok PostPosted: Fri Oct 31, 2014 18:54
    —
С %T пробовал, но пути с пробелами не видит

Имена файлов без расширений тоже никак нельзя сделать?

#22:  Author: FlasherLocation: Москва PostPosted: Fri Oct 31, 2014 19:44
    —
Нужно модифицировать код в любом случае.

#23:  Author: BatyaLocation: Москва, Россия PostPosted: Fri Nov 14, 2014 13:18
    —
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. На форуме бываю редко, т.ч. быстрый ответ не обещаю.

#24:  Author: FlasherLocation: Москва PostPosted: Fri Nov 14, 2014 18:19
    —
Batya wrote:
Что-то вы тут с Flasher накрутили...
Да я ничего тут не крутил. Smile
Batya wrote:
Но, как раз, запуск cmd может помочь
А с этим-то он как поможет?:
Dimsok wrote:
Имена файлов без расширений
Такое прокатит?: "%%~n{{%WF}}.mp3"

#25:  Author: BatyaLocation: Москва, Россия PostPosted: Sat Nov 15, 2014 10:42
    —
Flasher wrote:
А с этим-то он как поможет?:

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

#26:  Author: Dimsok PostPosted: Sat Nov 15, 2014 17:17
    —
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 минуты:

Аа, понял, поменять ' местами. А что это должно изменить?

#27:  Author: FlasherLocation: Москва PostPosted: Sat Nov 15, 2014 18:22
    —
Dimsok wrote:
А что это должно изменить?
Написано же - для проверки. Покажет запись комстроки.

#28:  Author: Victor_Dobrov PostPosted: Wed Apr 13, 2016 04:08
    —
Небольшая доработка, можно не указывать режим, и можно задать число одновременно выполняемых задач (по числу ядер процессора)
 Hidden text

#29:  Author: AvadaLocation: Россия, Саратов PostPosted: Wed Apr 13, 2016 08:05
    —
Victor_Dobrov
Для скриптов такого размера на форуме лучше применять спойлеры! Исправлено.

#30:  Author: helb PostPosted: Tue Nov 22, 2016 16:29
    —
Вариация на 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)
}



Total Commander -> Автоматизация Total Commander


output generated using printer-friendly topic mod. All times are GMT + 4 Hours

Goto page Previous  1, 2, 3  Next  :| |:
Page 2 of 3

Powered by phpBB © 2001, 2005 phpBB Group