Ликбез по синтаксису пакетных файлов
Select messages from
# through # FAQ
[/[Print]\]
Goto page 1, 2, 3  Next  :| |:
Total Commander -> Программное обеспечение

#1: Ликбез по синтаксису пакетных файлов Author: BatyaLocation: Москва, Россия PostPosted: Wed Jul 21, 2010 11:52
    —
1. Решил не плодить оффтоп в исходной теме, а сделать новую.

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

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


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

2. Подскажите, как штатными средствами командой в одну строку выполнить копирование файла с новым именем, чтобы по необходимости создавались каталоги? Команда "copy" каталоги не создает, а "xcopy" спрашивает, что является целевым объектом. Как жестко указать, что целевой объект - файл?

#2:  Author: MVVLocation: Ростов-Дон PostPosted: Wed Jul 21, 2010 12:14
    —
Я лично тоже не понял, зачем табуляция. По идее, в командных файлах пробелы вообще не играют роли, а в команде echo они влияют разве что на форматирование вывода, так что все должно работать хоть с пробелами, хоть с табами...

#3:  Author: Serge Yolkin PostPosted: Wed Jul 21, 2010 14:56
    —
Batya
Действительно, табы влияют только на форматирование. Просто, если разъезжаются строки, неудобно добавлять расширения/редакторы.

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

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

MVV
Совершенно верно, только форматирования ради.

#4:  Author: Serge Yolkin PostPosted: Wed Jul 21, 2010 15:06
    —
Прошу прощения, на счет copy - загнался. Это md умеет ветку создавать. Лучше вечером отрефрешу ОЗУ и отвечу более подробно.

#5:  Author: Tol!kLocation: Арзамас PostPosted: Wed Jul 21, 2010 15:26
    —
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

#6:  Author: MVVLocation: Ростов-Дон PostPosted: Wed Jul 21, 2010 15:53
    —
Кстати, если во втором параметре есть путь к файлу, то папку, в которой файл должен находиться, можно создать командой md, приписав к пути к файлу имя папки "..". Тогда, если копируется файл с путем из первого параметра в путь из второго:
Code:
md %2\.. 2> nul & copy /y %1 %2



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

Serge Yolkin wrote:
Или попробуйте robocopy
Первый же недостаток - программа не входит в состав Windows. Smile

#7:  Author: BatyaLocation: Москва, Россия PostPosted: Wed Jul 21, 2010 16:48
    —
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}"?

#8:  Author: Tol!kLocation: Арзамас PostPosted: Wed Jul 21, 2010 17:20
    —
Выходные данные {выражения 1} перенаправить на вход {выражения 2}

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


Last edited by Tol!k on Wed Jul 21, 2010 17:25; edited 1 time in total

#9:  Author: Serge Yolkin PostPosted: Wed Jul 21, 2010 17:24
    —
MVV
MVV wrote:
программа не входит в состав Windows


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

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


выражению 2 передается результат выполнения выражения 1

#10:  Author: Serge Yolkin PostPosted: Fri Jul 23, 2010 23:40
    —
Команда Echo.<tab>text выводит табуляцию сразу, от левого края рабочей области без точки (если между Echo и точкой не ставить пробел), такой же эффект для Set /p VAR=.<tab>prompt можно получить, если использовать вместо точки символ ASCII 08, а если 07 - то запрос ввода еще будет сопровождаться "бипом".

#11:  Author: Serge Yolkin PostPosted: Sun Aug 22, 2010 03:30
    —
Не самый необходимый батничек, но забавный пример синтаксиса:
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

#12: Нужно с командной строки добавить в реестр значение в кавычк Author: SilverVoxLocation: Русь PostPosted: Sun Sep 05, 2010 22:52
    —
Имеется проблема, нужно с командной строки добавить в реестр значение в кавычках.

Например:
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""



Надеюсь есть какое небудь решение.

#13:  Author: ВахмуркаLocation: Большая деревня Москва PostPosted: Sun Sep 05, 2010 23:53
    —
http://forum.wincmd.ru/viewpost.php?p=65853

#14:  Author: Tol!kLocation: Арзамас PostPosted: Mon Sep 06, 2010 01:07
    —
Вахмурка, в справке не написано про кавычки.

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


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

 !  Avada:
Перенесено.

#15:  Author: SilverVoxLocation: Русь PostPosted: Fri Sep 10, 2010 21:01
    —
Tol!k, Спасибо, работает.



Total Commander -> Программное обеспечение


output generated using printer-friendly topic mod. All times are GMT + 4 Hours

Goto page 1, 2, 3  Next  :| |:
Page 1 of 3

Powered by phpBB © 2001, 2005 phpBB Group