Войти

Показать полную графическую версию : [решено] Удаление строк в файле, начинающихся с переменной


2ooth
31-08-2011, 00:49
Такая вот проблема..

For /F "eol=%n%" %%I In (E:\1.txt) Do Echo %%I>E:\2.txt

В принципе, всё нормально, только в переменной %n% не один символ, а несколько.. Как реализовать что то подобное?

Iska
31-08-2011, 01:33
Например, использовать для решения данной задачи WSH или PoSH.

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

2ooth
31-08-2011, 02:20
cодержание файла E:\1.txt

User1_blah1.2th
User1_blah2.2th
User2_blah4.2th
User2_blah2.2th
User2_blah4.2th
User3_blah7.2th

содержание папки C:\Profiles\

С:\Profiles\User1.profile.2th
С:\Profiles\User3.profile.2th

сам bat

:CP
rem записываем имя профиля в переменную "n"
dir "C:\Profiles\" /b>%temp%\profilename.txt
for /F "Delims=." %%I in (%temp%\profilename.txt) do set n=%%I
rem переносим последний профиль переменной "n" во временную папку
copy "C:\Profiles\%n%.profile.2th" "%temp%\Prof\*"
del /F /Q "C:\Profiles\%n%.profile.2th" 2>nul
rem очищаем файл profilename.txt, для последующего повторного использования, с другим профилем
del /F /Q %temp%\profilename.txt 2>nul
rem выборка строк только со профилем "n"
For /F "eol=%n%" %%I In (E:\1.txt) Do Echo %%I>>E:\2.txt
rem проверяем, остались ли ещё не скопированные профили..
if exist "C:\Profiles\*.profile.2th" goto CP
rem если все профили были скопированы, возвращаем их на место
copy "%temp%\Prof\*.profile.2th" "C:\Profiles\*"

Нужен результат в E:\2.txt, но без строк начинающихся с "User2"

SendMessage
31-08-2011, 13:44
Если я правильно понял потребность, то все богатство приведенного батника решается этой строкой:
for /f "tokens=1 delims=." %%I in ('dir "C:\Profiles\" /b/a-d') do findstr /b "%%I" E:\1.txt >> E:\2.txt




© OSzone.net 2001-2012