Вычитание символов из строки и вывод на экран
Прошу помощи с реализацией именно *.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%%" но в таком варианте второй символ % распознается, как окончание конструкции... Кто в курсе, как можно обойти такой момент? |
Instant_SR, не совсем понятна глобальная Ваша цель, но используйте «setlocal enableextensions enabledelayedexpansion» в начале пакетного файла и «!find_adr:~%n%!».
Хорошо бы Вы привели полный код Вашего пакетного файла. |
Код:
@echo off Код:
@echo off |
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 символ больше |
Instant_SR, есть куда более простой способ:
Код:
@echo off |
Время: 18:29. |
Время: 18:29.
© OSzone.net 2001-