#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 фигню поправили.