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, 3  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Программное обеспечение printer-friendly view
View previous topic :: View next topic  
Author Message
Batya



Joined: 15 Dec 2004
Posts: 2200
Location: Москва, Россия

Post (Separately) Posted: Wed Jul 21, 2010 11:52    Post subject: Ликбез по синтаксису пакетных файлов Reply with quote

1. Решил не плодить оффтоп в исходной теме, а сделать новую.

Serge Yolkin wrote:
после Echo. идет табуляция

Tol!k wrote:
В следующих строках, видимо, тоже.


Расскажите, пожалуйста, а почему обязательно табуляция?

2. Подскажите, как штатными средствами командой в одну строку выполнить копирование файла с новым именем, чтобы по необходимости создавались каталоги? Команда "copy" каталоги не создает, а "xcopy" спрашивает, что является целевым объектом. Как жестко указать, что целевой объект - файл?
_________________
Нет, я не сплю. Я просто медленно моргаю.
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4745
Location: Ростов-Дон

Post (Separately) Posted: Wed Jul 21, 2010 12:14    Post subject: Reply with quote

Я лично тоже не понял, зачем табуляция. По идее, в командных файлах пробелы вообще не играют роли, а в команде echo они влияют разве что на форматирование вывода, так что все должно работать хоть с пробелами, хоть с табами...
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
Serge Yolkin



Joined: 25 Jul 2009
Posts: 664

Post (Separately) Posted: Wed Jul 21, 2010 14:56    Post subject: Reply with quote

Batya
Действительно, табы влияют только на форматирование. Просто, если разъезжаются строки, неудобно добавлять расширения/редакторы.

2. А что значит
Batya wrote:
по необходимости создавались каталоги?

пример, если можно. А то явно указанные каталоги в .cmd файлах (новый синтаксис!) и copy создавать умеет.
Или попробуйте robocopy /? - возможности очень широкие. И глубокие.

MVV
Совершенно верно, только форматирования ради.
Back to top
View user's profile Send private message
Serge Yolkin



Joined: 25 Jul 2009
Posts: 664

Post (Separately) Posted: Wed Jul 21, 2010 15:06    Post subject: Reply with quote

Прошу прощения, на счет copy - загнался. Это md умеет ветку создавать. Лучше вечером отрефрешу ОЗУ и отвечу более подробно.
Back to top
View user's profile Send private message
Tol!k



Joined: 01 Apr 2008
Posts: 1725
Location: Арзамас

Post (Separately) Posted: Wed Jul 21, 2010 15:26    Post subject: Reply with quote

Batya wrote:
в одну строку
Просто в одну строку или таки одной командой? Т.к. это тоже в одну строку:
Code:
md Folder 2> nul & copy /y Name.ext Folder\New_Name.ext

А одной (ну почти) командой: echo F | xcopy /y Name.ext Folder\New_Name.ext
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4745
Location: Ростов-Дон

Post (Separately) Posted: Wed Jul 21, 2010 15:53    Post subject: Reply with quote

Кстати, если во втором параметре есть путь к файлу, то папку, в которой файл должен находиться, можно создать командой md, приписав к пути к файлу имя папки "..". Тогда, если копируется файл с путем из первого параметра в путь из второго:
Code:
md %2\.. 2> nul & copy /y %1 %2



Tol!k wrote:
А одной (ну почти) командой
Тоже вариант. Будем надеяться, что она других вопросов с вариантом ответа F не задаст. Smile

Serge Yolkin wrote:
Или попробуйте robocopy
Первый же недостаток - программа не входит в состав Windows. Smile
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2200
Location: Москва, Россия

Post (Separately) Posted: Wed Jul 21, 2010 16:48    Post subject: Reply with quote

Tol!k wrote:
echo F | xcopy /y Name.ext Folder\New_Name.ext

То что нужно!
Спасибо!
Суть в том, что у меня из некой программы выполняется внешняя команда. Создавать дополнительные файлы крайне нежелательно. Вот и нужно было всё записать в одну строку (т.е. без батника). Получилось вот так:
Code:
'cmd /c echo F | xcopy /y "'+FilePath+FileName+FileExt+'" "C:\Путь к новому файлу\'+FileN+'"'

Здесь FilePath, FileName, FileExt, FileN - переменные. Причём FileN содержит новую относительную структуру каталогов, которых пока не существует. Начитывать новую переменную Folder тоже не очень удобно. Вот и нужно было извращаться, командой копирования создавать при необходимости несуществующие каталоги.
Ещё раз спасибо!

Кстати, а как читается конструкция "{выражение 1} | {выражение 2}"?
_________________
Нет, я не сплю. Я просто медленно моргаю.
Back to top
View user's profile Send private message
Tol!k



Joined: 01 Apr 2008
Posts: 1725
Location: Арзамас

Post (Separately) Posted: Wed Jul 21, 2010 17:20    Post subject: Reply with quote

Выходные данные {выражения 1} перенаправить на вход {выражения 2}

Оператор | называют каналом.


Last edited by Tol!k on Wed Jul 21, 2010 17:25; edited 1 time in total
Back to top
View user's profile Send private message
Serge Yolkin



Joined: 25 Jul 2009
Posts: 664

Post (Separately) Posted: Wed Jul 21, 2010 17:24    Post subject: Reply with quote

MVV
MVV wrote:
программа не входит в состав Windows


Ой, в XP и правда не входит...

Batya
Batya wrote:
как читается конструкция "{выражение 1} | {выражение 2}"


выражению 2 передается результат выполнения выражения 1
Back to top
View user's profile Send private message
Serge Yolkin



Joined: 25 Jul 2009
Posts: 664

Post (Separately) Posted: Fri Jul 23, 2010 23:40    Post subject: Reply with quote

Команда Echo.<tab>text выводит табуляцию сразу, от левого края рабочей области без точки (если между Echo и точкой не ставить пробел), такой же эффект для Set /p VAR=.<tab>prompt можно получить, если использовать вместо точки символ ASCII 08, а если 07 - то запрос ввода еще будет сопровождаться "бипом".
Back to top
View user's profile Send private message
Serge Yolkin



Joined: 25 Jul 2009
Posts: 664

Post (Separately) Posted: Sun Aug 22, 2010 03:30    Post subject: Reply with quote

Не самый необходимый батничек, но забавный пример синтаксиса:
Code:
begin 644 Dec-Hex.zip
M4$L#!!0````(`#N6%3TD^N;+K0$``$4#```+````1&5C+4AE>"YC;62-4LU*
MPT`0OMI`WF&@+%BI=I,V58,1:Q--H5A$!4]"U0:%8D1[Z*D'GR1(4H(U\96:
M4*V@T!?HP<FF?Y$*[B$[\^WW?3N3V3WMZL:$FF'PW$FC536OZDT6@:XJ5!#S
M!:FXN;5=VB^KV@'/1>2-?VT\)X]CHW1)6<I)/3T[MALZ8#O!*'2'GN_`JNU#
M49+R4@;<G@N?3A!ZEOUAA6Y_3J!M`U<&AF[0\[-3MU580F<4L/U>U_/!LX:N
M9X7?P0@">.L[@X'[$E@`%SNT?;$+D$G6%U>?NX\:6$EA.6C0?<6"4:#=M1H/
MJ+%[(WC^>O=MM,&4YRH&')DM4!O&[5WC&J6@M6];#"?IDMRA69&`=GR&3<"A
M>6J"G)[<4P=5*RM((C.@6E,0`T)`E(HS5*\P-)<$J5*M14QA`1,B+)>`1$6O
M_*;E$9O0RO5F$]CTM7.%$%V5.T3/DZQ`R#03$YF0R"C+)C;R&L_%+8[9<UC>
M:'P5I93]'C%;6$`)?N3.>N$OQS5&97:`BV!`YE"4HEJ*U,W'Y4\0*:"D8F'R
M!*^.3G";#"T.10SG3!PMY"YY[@=02P$"%``4````"``[EA4])/KFRZT!``!%
M`P``"P`D`````````"``````````1&5C+4AE>"YC;60*`"````````$`&`!/
MNF<=0$'+`>Q5]3\^0<L![%7U/SY!RP%02P4&``````$``0!=````U@$`````
`
end
sum -r/size 16371/585
Back to top
View user's profile Send private message
SilverVox



Joined: 13 Jun 2009
Posts: 25
Location: Русь

Post (Separately) Posted: Sun Sep 05, 2010 22:52    Post subject: Нужно с командной строки добавить в реестр значение в кавычк Reply with quote

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

Например:
Code:

REG ADD HKCR\mp3_file\shell\open\command  /ve ""C:\Program Files\kmp\kmplayer.exe" "/add %1""

Только так не получается, а результат должен быть приблизительно таков:

Code:
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\mp3_file\shell\open\command]
@=""C:\Program Files\kmp\kmplayer.exe" "/add %1""



Надеюсь есть какое небудь решение.
_________________
Если струну не дотянуть – она не будет звучать.
Если перетянуть – она лопнет.
Back to top
View user's profile Send private message
Вахмурка



Joined: 27 Dec 2004
Posts: 2537
Location: Большая деревня Москва

Post (Separately) Posted: Sun Sep 05, 2010 23:53    Post subject: Reply with quote

http://forum.wincmd.ru/viewpost.php?p=65853
_________________
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Back to top
View user's profile Send private message
Tol!k



Joined: 01 Apr 2008
Posts: 1725
Location: Арзамас

Post (Separately) Posted: Mon Sep 06, 2010 01:07    Post subject: Reply with quote

Вахмурка, в справке не написано про кавычки.

SilverVox
Code:
REG ADD HKCR\mp3_file\shell\open\command /ve /d "\"C:\Program Files\kmp\kmplayer.exe\" \"/add %1\""


Модераторы
Наверное, в эту тему.

 !  Avada:
Перенесено.
Back to top
View user's profile Send private message
SilverVox



Joined: 13 Jun 2009
Posts: 25
Location: Русь

Post (Separately) Posted: Fri Sep 10, 2010 21:01    Post subject: Reply with quote

Tol!k, Спасибо, работает.
_________________
Если струну не дотянуть – она не будет звучать.
Если перетянуть – она лопнет.
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, 3  Next
Page 1 of 3

 
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