Показать полную графическую версию : [решено] Удаление строк в файле, начинающихся с переменной
Такая вот проблема..
For /F "eol=%n%" %%I In (E:\1.txt) Do Echo %%I>E:\2.txt
В принципе, всё нормально, только в переменной %n% не один символ, а несколько.. Как реализовать что то подобное?
Например, использовать для решения данной задачи WSH или PoSH.
Если дадите конкретный пример, возможно, Вам подскажут, как его можно попробовать решить в рамках заявленной категории.
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
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.