Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Создание пустого файла горячими клавишами
Goto page 1, 2  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Общие вопросы printer-friendly view
View previous topic :: View next topic  
Author Message
KhodeN



Joined: 17 Oct 2005
Posts: 16
Location: Владивосток

Post (Separately) Posted: Sun Oct 30, 2005 11:42    Post subject: Создание пустого файла горячими клавишами Reply with quote

Знатоки командной строки, скриптов, ТС, помогите, пожалуйста!
Соображалки что-то не хватает, вроде и не ламер! Wink
Задачка такая:
Необходимо по хоткею создать в текущем катологе пустой файл, например "info.txt". По S+F4 бесит необходимость вручную вводить "info.txt". Если можно, то не создавать никаких дополнительных файлов (типа *.vbs; *.bat и т.д.), с дополнительным пунктом меню "Запуск" еще можно смириться.
Из форума понял, что Тоталу можно послать скриптами последовательность клавиш. Как это реализовать? Если файл уже существует, то необходимо создать "inf.txt" (опционально), затем "infor.txt" и т.д. (хотя можно и без этого условия: слишко сложно, наверное) Батником (мудрил с "copy con ...") - не получилось.
Эталон: одна строка-команда DOS.
Zet, кстати, уже спрашивала, но предложенные способы слишком долгие, а нужно "нажал - готово!"
Заранее СПАСИБО!
Back to top
View user's profile Send private message
CaptainFlint



Joined: 14 Dec 2004
Posts: 6151
Location: Москва

Post (Separately) Posted: Sun Oct 30, 2005 14:33    Post subject: Reply with quote

KhodeN
Добавь в меню Запуск такой пункт:
Команда: cmd
Параметры: /C if not exist info.txt copy nul info.txt
и повесь на неё клавишу. Если файл сущестсвует, ничего не произойдёт, если его нет - создастся пустой файл с таким именем. Более сложные варианты - уже через скрипты. Хотя, конечно, можно поизвращаться и с cmd, но мне, честно говоря, лень (я не настолько виртуозно владею этим языком). Smile
Back to top
View user's profile Send private message
c930



Joined: 15 Dec 2004
Posts: 325

Post (Separately) Posted: Mon Oct 31, 2005 01:31    Post subject: Reply with quote

А что значит создать пустой файл, файл нулевой длины что ли?
И для чего такой файл может сгодиться, интересно просто.
Понятно, если ты открываешь новый файл в редакторе - написать что-то хочешь (Shift+F4), а просто создать пустой файл зачем Question.

Ну, предложу тоже пару тривиальных вариантов:
  • если создаваемый файл нужно открыть в редакторе, то добавить в меню Запуск команду типа:
    editor info.txt, где editor, соответственно, имя редактора;
  • а если просто файл создать, то:
    create info.txt, где create - утилита (если нет такой системной команды), создающая файл на диске с заданными параметрами (я, например, пользуюсь такой).
Ну и присвоить этому пункту необходимую горячую клавишу, штатным способом.

P.S. У меня 98-й и там нет никакой cmd, про какую Капитан поведал.
Back to top
View user's profile Send private message
CaptainFlint



Joined: 14 Dec 2004
Posts: 6151
Location: Москва

Post (Separately) Posted: Mon Oct 31, 2005 01:59    Post subject: Reply with quote

c930
Quote:
P.S. У меня 98-й и там нет никакой cmd, про какую Капитан поведал.

А в command.com, по идее, должна быть возможность точно так же сделать. Smile Никаких специфических команд cmd.exe мой вариант не использует. Просто под NT-виндами cmd выполняется быстрее и корректнее, поэтому я именно с ним привёл пример.
Back to top
View user's profile Send private message
c930



Joined: 15 Dec 2004
Posts: 325

Post (Separately) Posted: Mon Oct 31, 2005 03:33    Post subject: Reply with quote

CaptainFlint
Не понял, у command.com в 98-м нет вроде никакой cmd команды, ни внешней, ни внутренней (честно сказать я вообще не знаю, что такое cmd.exe), и никакой для создания файлов Sad.

P.S. Понравилась мне возможность открывать новые вкладки средней клавишей мыши, о которой ты тут недавно упомянул .
Попробовал ей же на закладки давить - дак они гады стали закрываться Crying or Very sad, ну, тоже функциональность.
Back to top
View user's profile Send private message
CaptainFlint



Joined: 14 Dec 2004
Posts: 6151
Location: Москва

Post (Separately) Posted: Mon Oct 31, 2005 03:39    Post subject: Reply with quote

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. Понравилась мне возможность открывать новые вкладки средней клавишей мыши, о которой ты тут недавно упомянул .
Попробовал ей же на закладки давить - дак они гады стали закрываться , ну, тоже функциональность.

Хм... Не знаю, мне удобно... Smile Может, привык просто... В Опере вкладки тоже по нажатию средней кнопки закрываются.
Back to top
View user's profile Send private message
c930



Joined: 15 Dec 2004
Posts: 325

Post (Separately) Posted: Mon Oct 31, 2005 04:28    Post subject: Reply with quote

Quote:
варианта под command.com будет выглядеть так...
Не работает. А что ключ /С означает, create что ли?
Quote:
Не знаю, мне удобно...
Да я не говорю, что неудобно, но я то надеялся, что наоборот откроется новая, а закрыть и двойным щелчком левой можно.
Back to top
View user's profile Send private message
CaptainFlint



Joined: 14 Dec 2004
Posts: 6151
Location: Москва

Post (Separately) Posted: Mon Oct 31, 2005 04:43    Post subject: Reply with quote

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
View user's profile Send private message
c930



Joined: 15 Dec 2004
Posts: 325

Post (Separately) Posted: Mon Oct 31, 2005 05:14    Post subject: Reply with quote

Quote:
Странно... У себя проверил - тоже не фурычит. Хотя из командной строки нормально работает.
Так я и задавал из командной строки.
Quote:
Создай где угодно файлик с таким содержимым:
if not exist info.txt copy nul info.txt
Батник такой в 98-м ничего путнего не делает - пишет:
0 файлов скопировано и всё.
Ты хочешь сказать, что команда copy nul info.txt должна файл info.txt нулевой длины создать? Ничего подобного у нас в 98-м нет. Да ещё какое-то условие IF присутствует, чё-то я такое впервые вижу. Может у вас в 'NT' такие возможности. Ты в какой ОС пробуешь то? В новых тоже command.com есть (продвинутый Wink) или только cmd.exe?

P.S.
Quote:
В Опере вкладки тоже по нажатию средней кнопки закрываются.
Возьмём на вооружение Smile, на работе пользую Оперу, бывает.
Back to top
View user's profile Send private message
CaptainFlint



Joined: 14 Dec 2004
Posts: 6151
Location: Москва

Post (Separately) Posted: Mon Oct 31, 2005 10:17    Post subject: Reply with quote

c930
Quote:
Так я и задавал из командной строки.

Сорри, неправильно выразился, я имел в виду окно консоли... Из командной строки Тотала не работает.

Quote:
Батник такой в 98-м ничего путнего не делает - пишет:
0 файлов скопировано и всё.

М-да... Значит, надо разбираться. Я думал, такой вариант будет "интернациональным"... Скоро поставлю себе виртуальную 98, там посмотрю, что и как.

Quote:
Ты хочешь сказать, что команда copy nul info.txt должна файл info.txt нулевой длины создать?

По идее, да. Ещё со времён DOS'а существовало системное устройство nul, запись в которое уходила в никуда, а чтение из которого всегда выдавало пустую последовательность байт. Соответственно, в винде 98 оно тоже должно быть.

Quote:
Да ещё какое-то условие IF присутствует, чё-то я такое впервые вижу. Может у вас в 'NT' такие возможности.

Эти IF-ы тоже ещё во времена DOS'а жили и не тужили, эх, помню, как я с их помощью autoexec.bat под свои нужны наворачивал... (мечтательно закатывает глаза к верху) Smile 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
View user's profile Send private message
c930



Joined: 15 Dec 2004
Posts: 325

Post (Separately) Posted: Mon Oct 31, 2005 23:21    Post subject: Reply with quote

Итак в 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
View user's profile Send private message
Ciber SLasH



Joined: 20 Aug 2005
Posts: 209
Location: С.-Петербург

Post (Separately) Posted: Wed Nov 02, 2005 06:03    Post subject: Reply with quote

Попробуй это:
cmd.exe /C echo.>info.txt

Для Win9x заменить cmd.exe на command.com
Команда echo. (с точкой на конце) выводит на экран новую строку (ASCII-коды: #13#10), затем результат этой команды перенаправляется в файл >info.txt
Back to top
View user's profile Send private message
c930



Joined: 15 Dec 2004
Posts: 325

Post (Separately) Posted: Wed Nov 02, 2005 09:05    Post subject: Reply with quote

Да, такая команда (echo.>info.txt) работает даже из командной строки TC, но файл получается не совсем пустой Smile. Правда автор топика так и не пояснил, что такое пустой.
Back to top
View user's profile Send private message
CaptainFlint



Joined: 14 Dec 2004
Posts: 6151
Location: Москва

Post (Separately) Posted: Wed Nov 02, 2005 10:26    Post subject: Reply with quote

М-да. Поставил, наконец, себе виртуальную Win98 - и правда, не фурычит... Sad
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-м.

Да, похоже на то. Sad
Тогда тут можно сделать такой трюк. Выбрать где-нибудь на диске местечко укромное, и создать там вручную пустой файл empty.txt, например. А в Тотале для создания нужного нам пустого файла выполнять команду копирования, скажем:
copy C:\windows\empty.txt info.txt

Добавлено:
Блин, проверил на MS-DOS 6.22 - то же самое, не создаётся файл копированием из nul-а. Блин, откуда же я тогда этот трюк взял? Не мог же я его выдумать...
Back to top
View user's profile Send private message
c930



Joined: 15 Dec 2004
Posts: 325

Post (Separately) Posted: Thu Nov 03, 2005 05:36    Post subject: Reply with quote

Quote:
проверил на MS-DOS 6.22 - то же самое, не создаётся файл копированием из nul-а. Блин, откуда же я тогда этот трюк взял? Не мог же я его выдумать...
Из XP стало быть, раз там он срабатывает, ты говоришь Smile.
А я вот так и не попробовал в 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
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Общие вопросы All times are GMT + 4 Hours
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
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