Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Вычитание символов из строки и вывод на экран

Ответить
Настройки темы
CMD/BAT - [решено] Вычитание символов из строки и вывод на экран

Новый участник


Сообщения: 26
Благодарности: 1

Профиль | Отправить 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
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Instant_SR, не совсем понятна глобальная Ваша цель, но используйте «setlocal enableextensions enabledelayedexpansion» в начале пакетного файла и «!find_adr:~%n%!».

Хорошо бы Вы привели полный код Вашего пакетного файла.
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:22, 24-07-2013 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Старожил


Сообщения: 459
Благодарности: 138

Профиль | Отправить 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
Альтернативный вариант:
Код: Выделить весь код
@echo off
set "papka=C:\folder\"
for /f "delims=" %%i in ('dir /b /s "%papka%"') do (
set find_adr=%%i
call echo %%find_adr:%papka%=%%
)
pause

Отправлено: 18:47, 24-07-2013 | #3


Новый участник


Сообщения: 26
Благодарности: 1

Профиль | Отправить 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
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Instant_SR, есть куда более простой способ:
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

for /f "usebackq delims=" %%i in (`dir /a:-d /b /s "c:\%ComputerName%\*.*"`) do (
	echo %%~nxi
)

endlocal
exit /b 0
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:37, 25-07-2013 | #5



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Вычитание символов из строки и вывод на экран

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Офис и Текст - Как убрать заданное количество символов на начале каждой строки 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




 
Переход