Войти

Показать полную графическую версию : [решено] Поиск слово в конце строки...


angel_lyucifer
28-01-2017, 00:08
Привет всем, нужна ваша помощь.
Есть текстовый файл в него записывается строка C:\Users\бухой\AppData\Roaming\Skype\.\ часть этой строки меняется буква диска, имя пользователя но есть неизменная часть эта AppData\Roaming\Skype\Мне нужно чтобы скрипт записывал в переменную все что находится после слово Skype\
Я пытался что то сделать но не получилась.

CHCP 1251 >nul
for /f "usebackq tokens=*" %%i in (`type "%~dp0Skype1.txt" ^|findstr.exe /i /E /c:"C:\Users\бухой\AppData\Roaming\Skype\" 2^>nul`) do set ProfileSkype=%%i
<Nul Set /P Echo=%ProfileSkype%>"%~dp0Skype2.txt"
exitПомогите пожалуйста мне, очень надо...

Georgio
28-01-2017, 02:22
...но не получилась. »



Вы столкнулись с одним из многих багов "findstr.exe".
В данном случае баг — это невозможность обычным способом записать обратный слеш в конец поискового шаблона, так как этот слеш экранирует закрывающую кавычку.
Баг устраняется с помощью учетверения завершающего последнего обратного слеша (или же удлинения шаблона таким образом, чтобы этот слеш не был последним символом).

Код:
@echo off

for /f "usebackq tokens=*" %%i in (`
type "%~dp0Skype1.txt"^| findstr.exe /r /i /c:"[a-z]:\\Users\\[^\\][^\\]*\\AppData\\Roaming\\Skype\\\\"
`) do set "var=%%i"
set "ProfileSkype=%var:*\AppData\Roaming\Skype\=%"
<nul>"%~dp0Skype2.txt" set /p ="%ProfileSkype%"

exit /b
.

megaloman
28-01-2017, 03:14
@Echo off
cls

Set "Txt=Z:\Box_In\qqqqqq.txt"
Set "FStr=\AppData\Roaming\Skype\"

FOR /F "usebackq Skip=2 delims=" %%s IN (`find "%FStr%" "%Txt%"`) DO Call Set "Str=%%s" &Call Set "Str=%%Str:*%FStr%=%%"

Echo %Str%

pause

angel_lyucifer
28-01-2017, 05:14
Georgio»
Спасибо вам!




© OSzone.net 2001-2012