#post-id: 8196-23-33
#original-date: 3.01.2023 Tue
#original-time: 11:33 PM
#original-day: 8196
#original-host: WinXP Home SP3 (Build 2600)

Прикольненько. Есть второй FAR. Надо нам применить некую команду к куче найденных в разных каталогах файлов, при чём первым аргументом передать имя самого файла, а вторым – имя определённого файла в том же каталоге. Что может быть проще?



Первый параметр – метасимвол для каталога выделенного файла и имени выделенного файла. Второй – метасимвол каталога выделенного файла комбинируется с именем определённого файла.

Однако неожиданно оказывается, что оный файл создаётся только в одном каталоге. При этом будто бы команда вызывается для каждого файла.

Начинаем разбираться, и выясняется прекрасное. Оказывается, что команда именно так и вызывается: первый параметр – полное имя каждого найденного файла, а во второй параметр попадает один и тот же каталог. При более пристальном рассмотрении оказывается, что каталог попадает тот, в котором был файл, на котором стоял курсор при вызове массового применения команды.

В справке метасимвол «!\» расшифровывается как «Текущий путь». Но ведь в первом случае всё работает, и там они никакой не текущий!

Можно, конечно, передавать просто вот это:



Но это ненадёжно и так делать не надо, потому что на сетевой шаре первое превратится в полный путь, а на обычном диске – просто в имя файла. А второе так и останется просто именем файла, и не факт, что перед запуском программы текущий каталог будет сменён.

Поэтому приходится делать такой замечательный костыль:



Во второй параметр гарантированно попадёт полное имя исходного файла, после чего мы прикинемся, что это каталог и перейдём на уровень выше, где и разместится файл.

#upd(3.01.2023 - 11:58 PM):

Судя по всему, в третьем FAR фигню поправили.