|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Скопировать путь к открытому файлу и прописать его в конце текстового файла. |
|
CMD/BAT - Скопировать путь к открытому файлу и прописать его в конце текстового файла.
|
Новый участник Сообщения: 19 |
Не знал как еще сформулировать заголовок, но задача такая:
Нужно скопировать путь к папке, где лежит указанный файл. (Например, заходим на флешку в папку INSTALL, а в этой папке выделяем файл и нажимаем ХотКей, что запустит скрипт, который скопирует полный путь к папке где лежит этот файл, например: G:\INSTALL\. Но и имя файла тоже... Можно использовать переменные? Одна - путь к папке, а другая - имя файла?) Далее скрипт открывает заранее заданный в нем текстовый файл (например C:\setups.txt) , УДАЛЯЕТ заданное кол-во строк от конца (т.е. не первые строки, а последние, скажем, 4 строки), а затем прописывает следующие строки: "какая-то команда, ПУТЬ К ПАПКЕ какая-то команда, ИМЯ ФАЙЛА" например: cd E:\INSTALL del setup.exe Возможно ли такое в батниках или шелл-скриптах? Я просто не знаю как реализована работа с переменными в батниках и как ему узнать путь к файлу или папке, если он в этой папке не лежит (постоянно копировать его из папки в папку - не вариант). В идеале, конечно, чтобы было как я и описал, т.е. через горячую клавишу или контекстное меню... но жду ваших предложений, чтобы хоть как-то выйти из положения. Заранее спасибо. |
|
Отправлено: 07:46, 07-09-2012 |
Новый участник Сообщения: 19
|
Профиль | Сайт | Отправить PM | Цитировать Может быть кому-то будет интересным:
В моей компании люди работают в старой проге, которой не существует аналогов и которая существует только под ДОС, но успешно работает во всех виндах до Висты... но у нас лицензии только на семерку! Проблема существует только с этой прогой. Я нашел решение в виде DOSBOX'а, прога запускает просто идеально (правда приходилось несколько раз переконфигить досбокс, подбирая видео-режимы и типы процессоров). Но, народ жалуется, что пропала возможность запускать файлы, созданные этим ПО, непосредственно из папок, где они лежат! Т.е. приходится копировать их в папку, которая монтируется как диск C:, а потом в самой проге их открывать... это и неудобно и долго. Я придумал следующее: монтируем папку с прогой как диск С. Например: mount C C:\MegaCad\ (здесь лежит исполняемый файл проги: megac.exe) монтируем папку с файлом как див D. Например: mount D C:\Проекты\Cool\Бабруйск\Project1\ (здесь лежит файл проекта, например: project.mcp) Переходим в диск D:\ запускаем прогу и в конце прописываем имя открываемого файла! Пример: C:\megac.exe project.mcp Всё это прописывается в файл конфига досбокса, в самом конце! Затем запускается досбокс и выполняет все эти команды... Таким образом, прога запускается и открывает заданный файл, а конечный пользователь практически не замечает того, что работает в эмуляторе! (Другие варианты не предлагать! Я ТОЧНО знаю, что это работает так и никак иначе, т.к. вопрос изучен досконально. Не стоит говорить, например, нафига переходить в диск D:, или почему бы не прописывать полный путь до нужного файла и т.п. Испробовано всё! Прога слушается только так.) |
Отправлено: 08:11, 07-09-2012 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 2732
|
Профиль | Отправить PM | Цитировать Цитата:
@Echo Off cls rem Присваиваем переменным пути файла с батником Set DPName=%0 Set DName=%~d0 Set PName=%~p0 Set DP=%~dp0 Set Name=%~nx0 rem Выдаём на экран значения переменных Echo Полный путь к скрипту %DPName% Echo Диск к скрипту %DName% Echo Путь к скрипту %PName% Echo Диск и путь к скрипту %DP% Echo Имя скрипта и его расширение %Name% Цитата:
Цитата:
|
|||
------- Последний раз редактировалось megaloman, 07-09-2012 в 11:35. Отправлено: 11:00, 07-09-2012 | #3 |
Ушёл из жизни Сообщения: 6021
|
Профиль | Отправить PM | Цитировать Цитата VirusFUN:
:: Кодировка кириллица DOS (866) Set Key=HKCU\Software\Classes\*\shell\Путь к файлу :: Путь к батнику Set PathScript=e:\Temp\test 1.bat Reg Add "%Key%" /f Reg Add "%Key%\command" /ve /t REG_SZ /d "\"%PathScript%\" \"%%1\"" /f Цитата VirusFUN:
@Echo Off SetLocal EnableDelayedExpansion :: Путь к файлу setups.txt Set file=e:\Temp\setups.txt :: Путь к временному файлу Set tmpfile=e:\Temp\setups.tmp For /F "usebackq tokens=* delims=" %%i In ("%file%") Do Set /A cnt += 1 Set /A cnt -= 4 (For /F "usebackq tokens=* delims=" %%i In ("%file%") Do ( Echo %%i Set /A cnt -= 1 If "!cnt!" LEQ "0" GoTo _marc ))>"%tmpfile%" :_marc (Echo cd "%~dp1" Echo del "%~nx1")>>"%tmpfile%" Copy /Y "%tmpfile%" "%file%" Del /Q "%tmpfile%" |
||
Последний раз редактировалось gora, 10-09-2012 в 06:46. Причина: Исправлено удаление временного файла Отправлено: 11:50, 07-09-2012 | #4 |
Новый участник Сообщения: 19
|
Профиль | Сайт | Отправить PM | Цитировать Всем огромное спасибо, свою идею реализовал так как хотелось! Но, у меня остались маленькие вопросы:
gora, скажи, зачем нужно это в твоем примере?: Del /Q "%file%" Да и вообще, зачем нужен темп-файл? Сначала я сделал всё так, как ты написал... Но, если удалять какой-то из файлов - то при следующей манипуляции (следующем запуске "test 1.bat") , существующий файл "setups.tmp" будет полностью перезаписан и будет содержать только эти строки: Echo cd "%~dp1" Echo del "%~nx1" Вместо того, чтобы заменить ими только последние 2 строки. Я закомментил удаление файла и всё работает как надо! К тому же.. я не пойму твою логику, ведь удаляться должен темп-файл, а у тебя наоборот. Опечатка? |
|
Отправлено: 06:13, 10-09-2012 | #5 |
Ушёл из жизни Сообщения: 6021
|
Профиль | Отправить PM | Цитировать |
Отправлено: 08:08, 10-09-2012 | #6 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
VBS/WSH/JS - [решено] путь к файлу | mamont1 | Скриптовые языки администрирования Windows | 2 | 18-07-2011 16:05 | |
[решено] Как прописать путь | Centrinar | AutoIt | 3 | 09-03-2011 02:17 | |
C/C++ - Обьекты,Form, путь к файлу. | K1nDeR45 | Программирование и базы данных | 0 | 06-10-2010 12:08 | |
[решено] Как в программе прописать путь к языковому файлу? | dima1981 | Хочу все знать | 3 | 16-05-2009 14:16 | |
CMD/BAT - [решено] Как скопировать имя файла из текстового файла в код батника и т.д. | Nun-Nun | Скриптовые языки администрирования Windows | 6 | 13-05-2009 13:28 |
|