CMD/BAT - [решено] проверка последнего символа переменной %%i

Ответить
Аватара пользователя
icq99999999

CMD/BAT - [решено] проверка последнего символа переменной %%i

Сообщение icq99999999 »

есть такой код



HTML код:

Код: Выделить всё

@echo off
for /f "eol=# delims=^: tokens=*" %%i IN (%~dp0%~n0.yml) DO (
rem Здесь нужно проверить последний символ %%i и если этот символ \ то выполнить (goto 1 || goto 2)
)
pause



вот часть содержимого файла %~dp0%~n0.yml



HTML код:

Код: Выделить всё

C:\Users\836D~1\AppData\Roaming\1
C:\ProgramData\1\
%ProgramData%\1 2\
Аватара пользователя
Iska

Re: CMD/BAT - [решено] проверка последнего символа переменной %%i

Сообщение Iska »

Зачем там «eol=#»? Зачем «delims=^:»?


Цитата icq99999999:



rem Здесь нужно проверить последний символ %%i и если этот символ \ то
CMD/BAT - [решено] проверка последнего символа переменной %%i







set /?

[spoiler]Цитата:[/spoiler]





Можно также использовать строки расширения.



Код:

Код: Выделить всё

%PATH:~10,5%

расширит действие переменной среды PATH, затем использует только 5 символов, которые начинаются с 11-го символа (пропустив 10) расширенного результата. Если длина не указана, по умолчанию используется оставшееся значение переменной. Если оба значения (длина и число пропускаемых символов) отрицательны, следующим используемым значением будет длина значения переменной среды, добавленной к указанному значению пропуска или указанной длины.



Код:

Код: Выделить всё

%PATH:~-10%

извлечет последние 10 символов переменной PATH.



Код:

Код: Выделить всё

%PATH:~0,-2%

извлечет все символы переменной PATH, за исключением 2-х последних.

Аватара пользователя
Georgio

Re: CMD/BAT - [решено] проверка последнего символа переменной %%i

Сообщение Georgio »

Код:

Код: Выделить всё

@echo off
for /f "usebackq delims=" %%i in ("%~dpn0.yml") do (
 set x=%%i
 cmd /v:on /c echo !x!|>nul findstr \\$&& goto 1|| goto 2
 )
Аватара пользователя
icq99999999

Re: CMD/BAT - [решено] проверка последнего символа переменной %%i

Сообщение icq99999999 »

Цитата Georgio:



Код:
CMD/BAT - [решено] проверка последнего символа переменной %%i




и так



код отлично выполняется если в файле %~dpn0.yml есть 1 строка



HTML код:

Код: Выделить всё

C:\ProgramData\1



теперь нужно чтобы определялось много строк

и в зависимости есть ли в конце строки символ \ или нету выполнить (echo в конце строки "%%i" нет знака \) else ( echo в конце строки "%%i" есть знак \)



ну например если содержимое файла %~dpn0.yml будет таким:



HTML код:

Код: Выделить всё

C:\Users\836D~1\AppData\Roaming\1
C:\ProgramData\1\
%ProgramData%\1 2\



то должно вывестись в cmd:

в конце строки "C:\Users\836D~1\AppData\Roaming\1" нет знака \

в конце строки "C:\ProgramData\1\" есть знак \

в конце строки "%ProgramData%\1 2\" есть знак \
Аватара пользователя
Georgio

Re: CMD/BAT - [решено] проверка последнего символа переменной %%i

Сообщение Georgio »

Код:

Код: Выделить всё

@echo off
chcp 1251>nul
for /f "usebackq delims=" %%i in ("%~dpn0.yml") do (
 set x=%%i
 cmd /v:on /c echo !x!|>nul findstr \\$&& (
 for /f "delims=" %%j in ("в конце строки "%%i" есть знак \") do (
  chcp 866>nul
  echo %%j
  )
 )|| (
 for /f "delims=" %%j in ("в конце строки "%%i" нет знака \") do (
  chcp 866>nul
  echo %%j
  )
 )
 )
pause>nul
exit /b
Ответить

Вернуться в «Скриптовые языки администрирования Windows»