Форум программистов, компьютерный форум, киберфорум
Наши страницы
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Другие темы раздела
CMD/BAT Переименовать файл, взяв имя из другого файла http://www.cyberforum.ru/cmd-bat/thread877269.html
Всем привет, прошу прощения за глупый, возможно вопрос. Стоит задача переименовывать файл в автоматическом режиме, причем имя файла брать у другого файла. Поясно, в папке есть 2 файла: Vasya.hdf...
CMD/BAT Перекодировка текстового файла из ANSI в UTF-8
Здравствуйте, я нашел такой BAT файл, который перекодирует txt файл из ANSI в UNICODE Как его можно изменить, чтобы перекодировка происходила из ANSI В UTF - 8 @Echo Off SetLocal EnableExtensions...
Как вызвать программу с параметрами? CMD/BAT
Есть URL протокол, найдя его запись в реестре, я увидел следующее значение: "C:\AoS\client.exe" "%1" (это игра). То есть когда я щелкаю по ссылке сервера в браузере (выглядит как aos://цифры:цифры)...
CMD/BAT Проблема с русскими именами файлов при архивации их с использованием 7z.exe с помощью батника Когда в батнике test.cmd чтонить архивируешь с русскими буквами, то 7z выдает вывод в крякозябрах chcp 1251 "C:\Program Files\System\7-Zip\7z.exe" a arch.7z "Файл 1.txt" "Файл 2.txt pause... http://www.cyberforum.ru/cmd-bat/thread875921.html
CMD/BAT Можно ли сделать слайд-шоу с помощью bat-файла? http://www.cyberforum.ru/cmd-bat/thread875547.html
2. Если в папке находятся JPG файлы, можно ли из них делать слайд с помощи bat файла?
Способы защиты папки CMD/BAT
как защитить каталог (папку) в ms-dos?
CMD/BAT Копирование и перемещение в Командной строке
Доброго времени суток. Задача - перемещать из сетевой папки(test1) в локальную(test2) все файлы и папки которые появляются в сетевой время от времени. Реализация в CMD. Мое решение - ниже...
CMD/BAT Открыть папку в проводнике 1. Можно ли открыть папку как windows explorere с помощи bat файла? Добавлено через 2 часа 16 минут Нашла решение 1-го вопроса: start C:\MyFolder. http://www.cyberforum.ru/cmd-bat/thread875413.html
CMD/BAT Автоматизация поиска файла или каталога http://www.cyberforum.ru/cmd-bat/thread875239.html
Автоматизация поиска определенного файла или каталога на заданном накопителе (A: – Z:) с помощью совместного использования команд операционной системы DIR и FIND из состава операционной системы...
CMD/BAT Копирование заданного файла на все компьютеры в сети, IP-адреса которых находятся в списке в текстовом файле Доброго времени суток. Требовалось создать *.bat файл, который осуществит копирование файла по всем компьютерам IP адреса которых есть в списке, вот какой код получился: @Set Spisok=1.txt @Set... http://www.cyberforum.ru/cmd-bat/thread874848.html
ComSpec
3416 / 1959 / 629
Регистрация: 26.02.2014
Сообщений: 1,457
29.01.2016, 06:55 0

Циклические операции и примеры (команда FOR) * [Статья]

29.01.2016, 06:55. Просмотров 131834. Ответов 16
Метки (Все метки)

Ответ

Разбор строки с учётом "пустых токенов".

Данный код работает со всеми специальными символами, включая и

Цитата Сообщение от Dragokas Посмотреть сообщение
*
?
"
.

Единственный минус -- восклицательный знак не может использоваться в качестве разделителя (но только в качестве разделителя, наличие же его в анализируемой строке не вызовет проблем).

Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
@echo off
 
 
rem     Задаём переменную для разделителя.
rem     Разделителем может быть любой символ, кроме восклицательного знака.
rem     Символ процента необходимо удваивать.
 
set "d=|"
 
 
rem     Задаём переменную для строки.
rem     Строка может состоять из любых символов.
rem     Обычно значение присваивается переменной так: set "s=string".
rem     Но если в строке есть кавычки в сочетании со специальными символами,
rem     то задавать переменную желательно без кавычек,
rem     экранируя специальные символы по следующему правилу:
rem     символы не экранируются, если они находятся между парой кавычек;
rem     если число кавычек нечётное, то символы,
rem     расположенные после последней кавычки, не экранируются.
rem     Символы процента необходимо удваивать.
rem     Таким образом, строка
rem     ^!*"'||&*)"%=|", ;<>
rem     будет записана в переменную вот так:
 
set s=^^!*"'||&*)"%%=^|", ;<>
 
rem     При чтении строки из файла код справится с любым специальным символом
rem     без какого-либо предварительного экранирования или удваивания символов процента:
rem     <"test.txt" set/p s=
 
 
rem     Чтобы код был устойчив ко всем специальным символам,
rem     он написан в одну строку с переносами без использования кавычек.
rem     Комментарии в кодах такого типа пишутся так:
rem     rem: [комментарий] ^&^
 
 
                                             cmd/v/c^
                    rem: Данное преобразование строки необходимо для устранения ^&^
                    rem: эффекта исчезновения из строки кареток или уменьшения их числа: ^&^
                                   set s=!s:^^^^=^^^^^^^^!^&^
                    rem: Добавляем к каждому разделителю лишний символ слева ^&^
                    rem: (выбор пал на вопросительный знак) ^&^
                    rem: и разбиваем получившуюся строку на четыре токена: ^&^
    for /f usebackq^^ tokens^^=1-4^^ delims^^=^^^%d%^^ eol^^= %%i in ('!s:^^^%d%^^=?^^^%d%!') do @^
                    rem: Записываем значения переменных цикла в переменные среды ^&^
                    rem: (таким образом, к каждому токену, кроме последнего, добавился справа ^&^
                    rem: наш лишний символ, а псевдотокен с пустым значением стал полноценным): ^&^
                                           set i=%%i^&^
                                           set j=%%j^&^
                                           set k=%%k^&^
                    rem: Переменную для последнего токена можно не задавать. ^&^
                    rem: А теперь выводим полученные значения без последнего символа: ^&^
                                       echo. [!i:~^^,-1!] ^&^
                                       echo. [!j:~^^,-1!] ^&^
                                       echo. [!k:~^^,-1!] ^&^
                    rem: Последний токен выводим без изменений: ^&^
                                       echo. [%%l]        ^&^
                    rem: Можем и собрать строку обратно: ^&^ echo.^&^
                    echo.!i:~^^,-1!!d!!j:~^^,-1!!d!!k:~^^,-1!!d!%%l^&^
                                               exit /b
 
 
pause>nul
.

P.S. Вот как необычно непарная кавычка в строке код раскрасила.

Вернуться к обсуждению:
Циклические операции и примеры (команда FOR) * [Статья]
2
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.01.2016, 06:55

Статья о радиодальномере
Собсно, я не в курсах на этом форуме. Но подумал, мож кому будет интересен сабж. Это из рассылки...

Статья об include
Вот по этому адресу &lt;b&gt;http://www.seostop.ru/php-include.html&lt;/b&gt; есть статья об &lt;b&gt;include&lt;/b&gt; на...

Не открывается статья
Всем привет. Нужна помощь. Я создал сайт в программе Artisteer для движка Joomala, точнее не сайт а...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.