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

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

2ooth 31-08-2011 00:49 1742932

Удаление строк в файле, начинающихся с переменной
 
Такая вот проблема..

Код:

For /F "eol=%n%" %%I In (E:\1.txt) Do Echo %%I>E:\2.txt
В принципе, всё нормально, только в переменной %n% не один символ, а несколько.. Как реализовать что то подобное?

Iska 31-08-2011 01:33 1742939

Например, использовать для решения данной задачи WSH или PoSH.

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

2ooth 31-08-2011 02:20 1742953

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 1743204

Если я правильно понял потребность, то все богатство приведенного батника решается этой строкой:
Код:

for /f "tokens=1 delims=." %%I in ('dir "C:\Profiles\" /b/a-d') do findstr /b "%%I" E:\1.txt >> E:\2.txt


Время: 10:24.

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