Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] проверка последнего символа переменной %%i (http://forum.oszone.net/showthread.php?t=290850)

icq99999999 12-11-2014 16:42 2428532

проверка последнего символа переменной %%i
 
есть такой код
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 12-11-2014 17:13 2428545

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

Цитата icq99999999
rem Здесь нужно проверить последний символ %%i и если этот символ \ то »

set /?
Цитата:


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

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

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

Код:

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


Georgio 12-11-2014 18:20 2428575

Код:

@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 12-11-2014 19:46 2428619

Цитата:

Цитата Georgio
Код: »

и так

код отлично выполняется если в файле %~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 12-11-2014 20:23 2428625

Код:

@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



Время: 13:13.

Время: 13:13.
© OSzone.net 2001-