![]() |
Скопировать путь к открытому файлу и прописать его в конце текстового файла.
Не знал как еще сформулировать заголовок, но задача такая:
Нужно скопировать путь к папке, где лежит указанный файл. (Например, заходим на флешку в папку INSTALL, а в этой папке выделяем файл и нажимаем ХотКей, что запустит скрипт, который скопирует полный путь к папке где лежит этот файл, например: G:\INSTALL\. Но и имя файла тоже... Можно использовать переменные? Одна - путь к папке, а другая - имя файла?) Далее скрипт открывает заранее заданный в нем текстовый файл (например C:\setups.txt) , УДАЛЯЕТ заданное кол-во строк от конца (т.е. не первые строки, а последние, скажем, 4 строки), а затем прописывает следующие строки: "какая-то команда, ПУТЬ К ПАПКЕ какая-то команда, ИМЯ ФАЙЛА" например: cd E:\INSTALL del setup.exe Возможно ли такое в батниках или шелл-скриптах? Я просто не знаю как реализована работа с переменными в батниках и как ему узнать путь к файлу или папке, если он в этой папке не лежит (постоянно копировать его из папки в папку - не вариант). В идеале, конечно, чтобы было как я и описал, т.е. через горячую клавишу или контекстное меню... но жду ваших предложений, чтобы хоть как-то выйти из положения. Заранее спасибо. |
Может быть кому-то будет интересным:
В моей компании люди работают в старой проге, которой не существует аналогов и которая существует только под ДОС, но успешно работает во всех виндах до Висты... но у нас лицензии только на семерку! Проблема существует только с этой прогой. Я нашел решение в виде DOSBOX'а, прога запускает просто идеально (правда приходилось несколько раз переконфигить досбокс, подбирая видео-режимы и типы процессоров). Но, народ жалуется, что пропала возможность запускать файлы, созданные этим ПО, непосредственно из папок, где они лежат! Т.е. приходится копировать их в папку, которая монтируется как диск C:, а потом в самой проге их открывать... это и неудобно и долго. Я придумал следующее: монтируем папку с прогой как диск С. Например: mount C C:\MegaCad\ (здесь лежит исполняемый файл проги: megac.exe) монтируем папку с файлом как див D. Например: mount D C:\Проекты\Cool\Бабруйск\Project1\ (здесь лежит файл проекта, например: project.mcp) Переходим в диск D:\ запускаем прогу и в конце прописываем имя открываемого файла! Пример: C:\megac.exe project.mcp Всё это прописывается в файл конфига досбокса, в самом конце! Затем запускается досбокс и выполняет все эти команды... Таким образом, прога запускается и открывает заданный файл, а конечный пользователь практически не замечает того, что работает в эмуляторе! (Другие варианты не предлагать! Я ТОЧНО знаю, что это работает так и никак иначе, т.к. вопрос изучен досконально. Не стоит говорить, например, нафига переходить в диск D:, или почему бы не прописывать полный путь до нужного файла и т.п. Испробовано всё! Прога слушается только так.) |
Цитата:
Код:
@Echo Off Цитата:
Цитата:
Код:
Copy C:\Setups.000 C:\Setups.txt |
Цитата:
Код:
:: Кодировка кириллица DOS (866) Цитата:
Код:
@Echo Off |
Всем огромное спасибо, свою идею реализовал так как хотелось! Но, у меня остались маленькие вопросы:
gora, скажи, зачем нужно это в твоем примере?: Del /Q "%file%" Да и вообще, зачем нужен темп-файл? Сначала я сделал всё так, как ты написал... Но, если удалять какой-то из файлов - то при следующей манипуляции (следующем запуске "test 1.bat") , существующий файл "setups.tmp" будет полностью перезаписан и будет содержать только эти строки: Echo cd "%~dp1" Echo del "%~nx1" Вместо того, чтобы заменить ими только последние 2 строки. Я закомментил удаление файла и всё работает как надо! К тому же.. я не пойму твою логику, ведь удаляться должен темп-файл, а у тебя наоборот. Опечатка? |
Цитата:
Цитата:
Код:
@Echo Off |
Время: 19:06. |
Время: 19:06.
© OSzone.net 2001-