View previous topic :: View next topic |
Author |
Message |
Batya
Joined: 15 Dec 2004 Posts: 2220 Location: Москва, Россия
|
(Separately) Posted: Wed Jul 21, 2010 11:52 Post subject: Ликбез по синтаксису пакетных файлов |
|
|
1. Решил не плодить оффтоп в исходной теме, а сделать новую.
Serge Yolkin wrote: | после Echo. идет табуляция |
Tol!k wrote: | В следующих строках, видимо, тоже. |
Расскажите, пожалуйста, а почему обязательно табуляция?
2. Подскажите, как штатными средствами командой в одну строку выполнить копирование файла с новым именем, чтобы по необходимости создавались каталоги? Команда "copy" каталоги не создает, а "xcopy" спрашивает, что является целевым объектом. Как жестко указать, что целевой объект - файл? _________________ Нет, я не сплю. Я просто медленно моргаю. |
|
Back to top |
|
|
MVV
Joined: 15 Oct 2009 Posts: 4811 Location: Ростов-Дон
|
(Separately) Posted: Wed Jul 21, 2010 12:14 Post subject: |
|
|
Я лично тоже не понял, зачем табуляция. По идее, в командных файлах пробелы вообще не играют роли, а в команде echo они влияют разве что на форматирование вывода, так что все должно работать хоть с пробелами, хоть с табами... _________________ TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel… |
|
Back to top |
|
|
Serge Yolkin
Joined: 25 Jul 2009 Posts: 664
|
(Separately) Posted: Wed Jul 21, 2010 14:56 Post subject: |
|
|
Batya
Действительно, табы влияют только на форматирование. Просто, если разъезжаются строки, неудобно добавлять расширения/редакторы.
2. А что значит Batya wrote: | по необходимости создавались каталоги? |
пример, если можно. А то явно указанные каталоги в .cmd файлах (новый синтаксис!) и copy создавать умеет.
Или попробуйте robocopy /? - возможности очень широкие. И глубокие.
MVV
Совершенно верно, только форматирования ради. |
|
Back to top |
|
|
Serge Yolkin
Joined: 25 Jul 2009 Posts: 664
|
(Separately) Posted: Wed Jul 21, 2010 15:06 Post subject: |
|
|
Прошу прощения, на счет copy - загнался. Это md умеет ветку создавать. Лучше вечером отрефрешу ОЗУ и отвечу более подробно. |
|
Back to top |
|
|
Tol!k
Joined: 01 Apr 2008 Posts: 1727 Location: Арзамас
|
(Separately) Posted: Wed Jul 21, 2010 15:26 Post subject: |
|
|
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 |
|
|
MVV
Joined: 15 Oct 2009 Posts: 4811 Location: Ростов-Дон
|
(Separately) Posted: Wed Jul 21, 2010 15:53 Post subject: |
|
|
Кстати, если во втором параметре есть путь к файлу, то папку, в которой файл должен находиться, можно создать командой md, приписав к пути к файлу имя папки "..". Тогда, если копируется файл с путем из первого параметра в путь из второго:
Code: | md %2\.. 2> nul & copy /y %1 %2 |
Tol!k wrote: | А одной (ну почти) командой | Тоже вариант. Будем надеяться, что она других вопросов с вариантом ответа F не задаст.
Serge Yolkin wrote: | Или попробуйте robocopy | Первый же недостаток - программа не входит в состав Windows. _________________ TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel… |
|
Back to top |
|
|
Batya
Joined: 15 Dec 2004 Posts: 2220 Location: Москва, Россия
|
(Separately) Posted: Wed Jul 21, 2010 16:48 Post subject: |
|
|
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 |
|
|
Tol!k
Joined: 01 Apr 2008 Posts: 1727 Location: Арзамас
|
(Separately) Posted: Wed Jul 21, 2010 17:20 Post subject: |
|
|
Выходные данные {выражения 1} перенаправить на вход {выражения 2}
Оператор | называют каналом.
Last edited by Tol!k on Wed Jul 21, 2010 17:25; edited 1 time in total |
|
Back to top |
|
|
Serge Yolkin
Joined: 25 Jul 2009 Posts: 664
|
(Separately) Posted: Wed Jul 21, 2010 17:24 Post subject: |
|
|
MVV
MVV wrote: | программа не входит в состав Windows |
Ой, в XP и правда не входит...
Batya
Batya wrote: | как читается конструкция "{выражение 1} | {выражение 2}" |
выражению 2 передается результат выполнения выражения 1 |
|
Back to top |
|
|
Serge Yolkin
Joined: 25 Jul 2009 Posts: 664
|
(Separately) Posted: Fri Jul 23, 2010 23:40 Post subject: |
|
|
Команда Echo.<tab>text выводит табуляцию сразу, от левого края рабочей области без точки (если между Echo и точкой не ставить пробел), такой же эффект для Set /p VAR=.<tab>prompt можно получить, если использовать вместо точки символ ASCII 08, а если 07 - то запрос ввода еще будет сопровождаться "бипом". |
|
Back to top |
|
|
Serge Yolkin
Joined: 25 Jul 2009 Posts: 664
|
(Separately) Posted: Sun Aug 22, 2010 03:30 Post subject: |
|
|
Не самый необходимый батничек, но забавный пример синтаксиса: 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 |
|
|
SilverVox
Joined: 13 Jun 2009 Posts: 25 Location: Русь
|
(Separately) Posted: Sun Sep 05, 2010 22:52 Post subject: Нужно с командной строки добавить в реестр значение в кавычк |
|
|
Имеется проблема, нужно с командной строки добавить в реестр значение в кавычках.
Например:
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 |
|
|
Вахмурка
Joined: 27 Dec 2004 Posts: 2585 Location: Большая деревня Москва
|
|
Back to top |
|
|
Tol!k
Joined: 01 Apr 2008 Posts: 1727 Location: Арзамас
|
(Separately) Posted: Mon Sep 06, 2010 01:07 Post subject: |
|
|
Вахмурка, в справке не написано про кавычки.
SilverVox Code: | REG ADD HKCR\mp3_file\shell\open\command /ve /d "\"C:\Program Files\kmp\kmplayer.exe\" \"/add %1\"" |
Модераторы
Наверное, в эту тему.
|
|
Back to top |
|
|
SilverVox
Joined: 13 Jun 2009 Posts: 25 Location: Русь
|
(Separately) Posted: Fri Sep 10, 2010 21:01 Post subject: |
|
|
Tol!k, Спасибо, работает. _________________ Если струну не дотянуть – она не будет звучать.
Если перетянуть – она лопнет. |
|
Back to top |
|
|
|