Сортировка выбранных файлов в sendTo - PullRequest
0 голосов
/ 06 мая 2020

Как отсортировать список файлов, который обрабатывается пакетным файлом через sendTo-menu, например:

myDir
  file_1.txt
  file_3.txt
  hello.world
  foo.bar

Если я отмечу эти файлы и вызываю пакетный файл через sendTo- ссылка для обработки этих файлов, порядок файлов кажется случайным:

FOR %%A IN (%*) DO (set command=!command! %%A)
ECHO %command%

В некоторых случаях это не имеет значения, но, например, для слияния это имеет значение.

Что-то например, использование dir"*.sql ^| sort не работает, поэтому выбранные имена файлов не учитываются.

1 Ответ

0 голосов
/ 07 мая 2020
@echo off
setlocal

rem Sort args stored if 1st argument is /sort_args.
if "%~1" == "/sort_args" goto :sort_args

rem Store all arguments in a named variable.
set args=%*

rem Process sorted arguments.
for /f "delims=" %%A in ('cmd /c "%~f0" /sort_args') do (
    echo %%A
)
exit /b 0


:sort_args

rem Abort if no arguments.
if not defined args exit /b 0

rem Sort arguments.
(for %%A in (%args%) do @echo %%A) | sort
exit /b 0

Если исходные аргументы не имеют /sort_args в качестве аргумента, тогда аргументы сохранятся в args. for /f l oop снова запустит этот код для sort исходных аргументов и отобразит аргументы обратно в for /f l oop для обработки.

Может изменить /sort_args на что-то при желании более уникальный.

...