|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Вычитание символов из строки и вывод на экран |
|
CMD/BAT - [решено] Вычитание символов из строки и вывод на экран
|
Новый участник Сообщения: 26 |
Профиль | Отправить PM | Цитировать Прошу помощи с реализацией именно *.bat:
Есть конструкция в которой "вращается" счетчик вида: :loop_len if not "%papka%"=="" ( set papka=%papka:~1% set /a n=%n% + 1 goto loop_len ) Тут все отлично значение %n% верное Есть вторая конструкция, возвращающая строками, что находится в указанной папке в виде полного адреса к конечному файлу: for /f "tokens=*" %%i in ('dir /b /s "%papka%"') do ( set find_adr=%%i echo %find_adr% ) Есть вариант команды "echo %[строка]:~[число]%" которая отсекает [число] знаков слева у [строка] Мне нужна помощь в том, чтобы из строки второй конструкции %find_adr% отнять число %n% знаков слева, которые получаются из первой конструкции. т.е. вида "echo %%find_adr%:~%n%%" но в таком варианте второй символ % распознается, как окончание конструкции... Кто в курсе, как можно обойти такой момент? |
|
Отправлено: 17:43, 24-07-2013 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Instant_SR, не совсем понятна глобальная Ваша цель, но используйте «setlocal enableextensions enabledelayedexpansion» в начале пакетного файла и «!find_adr:~%n%!».
Хорошо бы Вы привели полный код Вашего пакетного файла. |
Отправлено: 18:22, 24-07-2013 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 459
|
Профиль | Отправить PM | Цитировать @echo off set "papka=C:\folder\" setlocal :loop_len if not "%papka%"=="" ( set papka=%papka:~1% set /a n+=1 goto loop_len ) endlocal & set n=%n% for /f "tokens=*" %%i in ('dir /b /s "%papka%"') do ( set find_adr=%%i call echo %%find_adr:~%n%%% ) pause |
Отправлено: 18:47, 24-07-2013 | #3 |
Новый участник Сообщения: 26
|
Профиль | Отправить PM | Цитировать Iska, благодарю, я так пытался, но SETLOCAL установлено было не в начале скрипта, а перед входом в :loop_len
кому интересно. вот даю тестовый текст кода от начала и до конца: @ECHO off @COLOR 3 @CHCP 866 SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION CLS SET pc=%COMPUTERNAME% && SET path=C:\%COMPUTERNAME% ECHO "Имя ПК = %pc%" && ECHO "Путь к тестовой папке = %path%" ECHO "Посчитаем число символов в пути к тестовой папке" PAUSE SET /A counter=0 :loop_len IF NOT "%path%"=="" ( SET path=%path:~1% SET /A counter=%counter%+1 GOTO loop_len ) SET path=C:\%COMPUTERNAME% ECHO Счетчик = %counter% ECHO "Выведем список файлов в директории %path%" PAUSE FOR /F "TOKENS=*" %%i IN ('DIR /B /S "%path%"') DO ( SET result=%%i ECHO !result:~%counter%! ) PAUSE Результат: "result" выводится с 1 "лишним символом" слева так что есть резон "отрезать" на 1 символ больше |
Отправлено: 11:18, 25-07-2013 | #4 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать |
|
Отправлено: 11:37, 25-07-2013 | #5 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Офис и Текст - Как убрать заданное количество символов на начале каждой строки | KooDI | Программное обеспечение Windows | 2 | 03-03-2013 21:32 | |
CMD/BAT - [решено] вывод строки из *.xml | LAKERS824 | Скриптовые языки администрирования Windows | 26 | 08-07-2012 00:09 | |
[решено] Запуск апплета Экран на вкладке Заставка из командной строки | TERMINAL | Хочу все знать | 6 | 07-11-2006 12:32 | |
JavaScript вывод на экран | KHEXT | Вебмастеру | 1 | 26-01-2004 23:31 | |
Перевод строки символов в hex в С++ | Guest | Программирование и базы данных | 3 | 16-01-2003 04:55 |
|