View previous topic :: View next topic |
Author |
Message |
KhodeN
Joined: 17 Oct 2005 Posts: 16 Location: Владивосток
|
(Separately) Posted: Sun Oct 30, 2005 11:42 Post subject: Создание пустого файла горячими клавишами |
|
|
Знатоки командной строки, скриптов, ТС, помогите, пожалуйста!
Соображалки что-то не хватает, вроде и не ламер!
Задачка такая:
Необходимо по хоткею создать в текущем катологе пустой файл, например "info.txt". По S+F4 бесит необходимость вручную вводить "info.txt". Если можно, то не создавать никаких дополнительных файлов (типа *.vbs; *.bat и т.д.), с дополнительным пунктом меню "Запуск" еще можно смириться.
Из форума понял, что Тоталу можно послать скриптами последовательность клавиш. Как это реализовать? Если файл уже существует, то необходимо создать "inf.txt" (опционально), затем "infor.txt" и т.д. (хотя можно и без этого условия: слишко сложно, наверное) Батником (мудрил с "copy con ...") - не получилось.
Эталон: одна строка-команда DOS.
Zet, кстати, уже спрашивала, но предложенные способы слишком долгие, а нужно "нажал - готово!"
Заранее СПАСИБО! |
|
Back to top |
|
|
CaptainFlint
Joined: 14 Dec 2004 Posts: 6151 Location: Москва
|
(Separately) Posted: Sun Oct 30, 2005 14:33 Post subject: |
|
|
KhodeN
Добавь в меню Запуск такой пункт:
Команда: cmd
Параметры: /C if not exist info.txt copy nul info.txt
и повесь на неё клавишу. Если файл сущестсвует, ничего не произойдёт, если его нет - создастся пустой файл с таким именем. Более сложные варианты - уже через скрипты. Хотя, конечно, можно поизвращаться и с cmd, но мне, честно говоря, лень (я не настолько виртуозно владею этим языком). |
|
Back to top |
|
|
c930
Joined: 15 Dec 2004 Posts: 325
|
(Separately) Posted: Mon Oct 31, 2005 01:31 Post subject: |
|
|
А что значит создать пустой файл, файл нулевой длины что ли?
И для чего такой файл может сгодиться, интересно просто.
Понятно, если ты открываешь новый файл в редакторе - написать что-то хочешь (Shift+F4), а просто создать пустой файл зачем .
Ну, предложу тоже пару тривиальных вариантов:- если создаваемый файл нужно открыть в редакторе, то добавить в меню Запуск команду типа:
editor info.txt, где editor, соответственно, имя редактора;
- а если просто файл создать, то:
create info.txt, где create - утилита (если нет такой системной команды), создающая файл на диске с заданными параметрами (я, например, пользуюсь такой). Ну и присвоить этому пункту необходимую горячую клавишу, штатным способом.
P.S. У меня 98-й и там нет никакой cmd, про какую Капитан поведал. |
|
Back to top |
|
|
CaptainFlint
Joined: 14 Dec 2004 Posts: 6151 Location: Москва
|
(Separately) Posted: Mon Oct 31, 2005 01:59 Post subject: |
|
|
c930
Quote: | P.S. У меня 98-й и там нет никакой cmd, про какую Капитан поведал. |
А в command.com, по идее, должна быть возможность точно так же сделать. Никаких специфических команд cmd.exe мой вариант не использует. Просто под NT-виндами cmd выполняется быстрее и корректнее, поэтому я именно с ним привёл пример. |
|
Back to top |
|
|
c930
Joined: 15 Dec 2004 Posts: 325
|
(Separately) Posted: Mon Oct 31, 2005 03:33 Post subject: |
|
|
CaptainFlint
Не понял, у command.com в 98-м нет вроде никакой cmd команды, ни внешней, ни внутренней (честно сказать я вообще не знаю, что такое cmd.exe), и никакой для создания файлов .
P.S. Понравилась мне возможность открывать новые вкладки средней клавишей мыши, о которой ты тут недавно упомянул .
Попробовал ей же на закладки давить - дак они гады стали закрываться , ну, тоже функциональность. |
|
Back to top |
|
|
CaptainFlint
Joined: 14 Dec 2004 Posts: 6151 Location: Москва
|
(Separately) Posted: Mon Oct 31, 2005 03:39 Post subject: |
|
|
c930
Quote: | Не понял, у command.com в 98-м нет вроде никакой cmd команды, ни внешней, ни внутренней (честно сказать я вообще не знаю, что такое cmd.exe), и никакой для создания файлов |
cmd.exe - это заменитель command.com'а в новых системах, только и всего. Просто более мощный и удобный аналог. Т.е. переделка моего варианта под command.com будет выглядеть так:
Команда: command.com
Параметры: /C if not exist info.txt copy nul info.txt
Quote: | P.S. Понравилась мне возможность открывать новые вкладки средней клавишей мыши, о которой ты тут недавно упомянул .
Попробовал ей же на закладки давить - дак они гады стали закрываться , ну, тоже функциональность. |
Хм... Не знаю, мне удобно... Может, привык просто... В Опере вкладки тоже по нажатию средней кнопки закрываются. |
|
Back to top |
|
|
c930
Joined: 15 Dec 2004 Posts: 325
|
(Separately) Posted: Mon Oct 31, 2005 04:28 Post subject: |
|
|
Quote: | варианта под command.com будет выглядеть так... | Не работает. А что ключ /С означает, create что ли? Quote: | Не знаю, мне удобно... | Да я не говорю, что неудобно, но я то надеялся, что наоборот откроется новая, а закрыть и двойным щелчком левой можно. |
|
Back to top |
|
|
CaptainFlint
Joined: 14 Dec 2004 Posts: 6151 Location: Москва
|
(Separately) Posted: Mon Oct 31, 2005 04:43 Post subject: |
|
|
c930
Quote: | Не работает. А что ключ /С означает, create что ли? |
Странно... У себя проверил - тоже не фурычит. Хотя из командной строки нормально работает. Похоже, придётся батник писать...
Создай где угодно файлик с таким содержимым:
if not exist info.txt copy nul info.txt
Назови его как угодно, с расширением BAT (например, CreateInfo.bat). Потом в меню запуск создай новый пункт, а в качестве команды пропиши полный путь к этому файлу CreateInfo.bat, в поле Параметры ничего не указывай. Это должно сработать. У меня работает, во всяком случае.
Quote: | А что ключ /С означает, create что ли? |
Нет. /C - это параметр command.com'а, указывающий, что всё, следующее за этим параметром, надо расценивать как команду, выполнить эту команду и завершиться. Есть ещё параметр /K, который делает то же самое, но command.com после выполнения команды не завершается, а остаётся висеть консольным окном. |
|
Back to top |
|
|
c930
Joined: 15 Dec 2004 Posts: 325
|
(Separately) Posted: Mon Oct 31, 2005 05:14 Post subject: |
|
|
Quote: | Странно... У себя проверил - тоже не фурычит. Хотя из командной строки нормально работает. | Так я и задавал из командной строки. Quote: | Создай где угодно файлик с таким содержимым:
if not exist info.txt copy nul info.txt | Батник такой в 98-м ничего путнего не делает - пишет:
0 файлов скопировано и всё.
Ты хочешь сказать, что команда copy nul info.txt должна файл info.txt нулевой длины создать? Ничего подобного у нас в 98-м нет. Да ещё какое-то условие IF присутствует, чё-то я такое впервые вижу. Может у вас в 'NT' такие возможности. Ты в какой ОС пробуешь то? В новых тоже command.com есть (продвинутый ) или только cmd.exe?
P.S. Quote: | В Опере вкладки тоже по нажатию средней кнопки закрываются. | Возьмём на вооружение , на работе пользую Оперу, бывает. |
|
Back to top |
|
|
CaptainFlint
Joined: 14 Dec 2004 Posts: 6151 Location: Москва
|
(Separately) Posted: Mon Oct 31, 2005 10:17 Post subject: |
|
|
c930
Quote: | Так я и задавал из командной строки. |
Сорри, неправильно выразился, я имел в виду окно консоли... Из командной строки Тотала не работает.
Quote: | Батник такой в 98-м ничего путнего не делает - пишет:
0 файлов скопировано и всё. |
М-да... Значит, надо разбираться. Я думал, такой вариант будет "интернациональным"... Скоро поставлю себе виртуальную 98, там посмотрю, что и как.
Quote: | Ты хочешь сказать, что команда copy nul info.txt должна файл info.txt нулевой длины создать? |
По идее, да. Ещё со времён DOS'а существовало системное устройство nul, запись в которое уходила в никуда, а чтение из которого всегда выдавало пустую последовательность байт. Соответственно, в винде 98 оно тоже должно быть.
Quote: | Да ещё какое-то условие IF присутствует, чё-то я такое впервые вижу. Может у вас в 'NT' такие возможности. |
Эти IF-ы тоже ещё во времена DOS'а жили и не тужили, эх, помню, как я с их помощью autoexec.bat под свои нужны наворачивал... (мечтательно закатывает глаза к верху) if exist filename - это условие, проверяющее, существует ли файл filename или нет. Если да, то следующая за if'ом команда выполняется, иначе - нет. Соответственно, команда if not exist filename выполняет в точности то же самое, только наоборот: следующая команда будет выполнена, только если файла не существует. Этим я запретил перезаписывать файл, если он уже существует (иначе все данные из него прибиваются).
Quote: | Ты в какой ОС пробуешь то? В новых тоже command.com есть (продвинутый ) или только cmd.exe? |
Я в XP, но в ней тоже есть command.com, видимо, для совместимости со старыми программами. Но, ещё раз скажу, все сделанные мной трюки работали даже в чистом MS-DOS 6.22, поэтому уж в Windows 98-то они точно должны работать. В общем, поставлю себе 98, проверю, в чём проблема. Может, удастся решить, а может и нет... |
|
Back to top |
|
|
c930
Joined: 15 Dec 2004 Posts: 325
|
(Separately) Posted: Mon Oct 31, 2005 23:21 Post subject: |
|
|
Итак в 98-м такая ситуация:- командная строка типа if not exist info.txt copy nul info.txt,
начинающаяся с оператора IF, набранная и запущенная из TC - не пашет, TC пишет: Файл не найден.
Запущенная в окошке DOS-сеанса - выполняется.
Ну и из командного файла, соответственно, тоже;
- команда copy nul info.txt НЕ создаёт пустой файл, а наоборот - если файл такой существует (любой длины), то он стирается! Это относится и к предыдущему пункту. Видимо это особенность интерпретатора команд в 98-м.
Про NUL-устройство я в курсе, но обычно на него всё время копировал, с него как-то не доводилось, поэтому как на это DOS реагировал не знаю. DOSа нет щас под рукой, дома попробую. |
|
Back to top |
|
|
Ciber SLasH
Joined: 20 Aug 2005 Posts: 209 Location: С.-Петербург
|
(Separately) Posted: Wed Nov 02, 2005 06:03 Post subject: |
|
|
Попробуй это:
cmd.exe /C echo.>info.txt
Для Win9x заменить cmd.exe на command.com
Команда echo. (с точкой на конце) выводит на экран новую строку (ASCII-коды: #13#10), затем результат этой команды перенаправляется в файл >info.txt |
|
Back to top |
|
|
c930
Joined: 15 Dec 2004 Posts: 325
|
(Separately) Posted: Wed Nov 02, 2005 09:05 Post subject: |
|
|
Да, такая команда (echo.>info.txt) работает даже из командной строки TC, но файл получается не совсем пустой . Правда автор топика так и не пояснил, что такое пустой. |
|
Back to top |
|
|
CaptainFlint
Joined: 14 Dec 2004 Posts: 6151 Location: Москва
|
(Separately) Posted: Wed Nov 02, 2005 10:26 Post subject: |
|
|
М-да. Поставил, наконец, себе виртуальную Win98 - и правда, не фурычит...
c930
Quote: | командная строка типа if not exist info.txt copy nul info.txt,
начинающаяся с оператора IF, набранная и запущенная из TC - не пашет, TC пишет: Файл не найден. |
Это-то правильно, из командной строки Тотала надо запускать её через command.com /C if... , ведь if - это не программа, а внутренняя команда command.com'а, вот он её и не находит. А консоль DOS - это по сути и есть запущенный command.com (и BAT-файлы тоже он обрабатывает), поэтому в тех случаях команда if срабатывает нормально.
Quote: | команда copy nul info.txt НЕ создаёт пустой файл, а наоборот - если файл такой существует (любой длины), то он стирается! Это относится и к предыдущему пункту. Видимо это особенность интерпретатора команд в 98-м. |
Да, похоже на то.
Тогда тут можно сделать такой трюк. Выбрать где-нибудь на диске местечко укромное, и создать там вручную пустой файл empty.txt, например. А в Тотале для создания нужного нам пустого файла выполнять команду копирования, скажем:
copy C:\windows\empty.txt info.txt
Добавлено:
Блин, проверил на MS-DOS 6.22 - то же самое, не создаётся файл копированием из nul-а. Блин, откуда же я тогда этот трюк взял? Не мог же я его выдумать... |
|
Back to top |
|
|
c930
Joined: 15 Dec 2004 Posts: 325
|
(Separately) Posted: Thu Nov 03, 2005 05:36 Post subject: |
|
|
Quote: | проверил на MS-DOS 6.22 - то же самое, не создаётся файл копированием из nul-а. Блин, откуда же я тогда этот трюк взял? Не мог же я его выдумать... | Из XP стало быть, раз там он срабатывает, ты говоришь .
А я вот так и не попробовал в DOSе пока, дома стоит DOS, но монитор чё-то заглючил - в 'досовском' видеорежиме кадровая синхронизация пидарасит, кадр прыгает и ничего не разобрать. Но раз ты попробовал, то охотно верю.
А вообще я с человеком 'тут' поговорил, он в своё время увлекался всякими подобными трюками в DOSе, так говорит при переходе на Win95, они ещё работали, а в Win98 - половина перестали. Quote: | и создать там вручную пустой файл empty.txt, например... | Ну это автору топика возможно пригодится, пропал он куда-то, я ж пользуюсь консольной утилитой Create Vladimirа Tarasovа, которая, если длина не задана, создаёт файл нулевой длины. Quote: | Quote: | командная строка типа if not exist info.txt copy nul info.txt, начинающаяся с оператора IF, набранная и запущенная из TC - не пашет, TC пишет: Файл не найден. | Это-то правильно, из командной строки Тотала надо запускать её через command.com /C if... , ведь if - это не программа, а внутренняя команда command.com'а, вот он её и не находит. А консоль DOS - это по сути и есть запущенный command.com (и BAT-файлы тоже он обрабатывает), поэтому в тех случаях команда if срабатывает нормально. | Да, красиво изложил и на первый взгляд логично. Только Copy тоже внутренняя команда, а она выполняется (из командной строки TC).
А кроме того команда if not exist info.txt copy nul info.txt из командных строк других командеров, а именно FARа и DC (DISCo Commanderа) выполняется в отличие от Тотала. |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|