Войти

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


popoves
29-02-2012, 15:45
Добрый день.
Нужна помощь в написании следующего скрипта:
1. Необходимо найти на ПК файл с названием cspwork.txt, путь к этому файлу занести в переменную %home%
2. В этом файле несколько строк различного содержания, нужно найти строку в файле с содержанием "PATH=C:\CSP\test" и все содержимое данной строки, что стоит после PATH= занести в переменную %path1% (C:\CSP\test)
3. Удалить созданные переменные.
Помогите пожалуйста, спасибо!

Iska
29-02-2012, 16:04
popoves, что Вы уже сделали, и что у Вас не получается?

popoves
29-02-2012, 17:42
Получилось следующее:

:: присваиваем результату поиска пути к cspwork.txt значение переменной %home%
For /F "tokens=*" %%i in ('dir /b /s /a -d C:\cspwork.txt') do set home=%%i
:: присваиваем переменной %path1% значение из файла после PATH=
For /F "eol=; tokens=1* delims==" %%i In (%home%) Do Set %%i=%%j
PATH=%path1%

но почему-то не работает, с удалением переменных пока не разобрался, и хочется чтобы поиск осуществлялся на всех локальных дисках.

popoves
29-02-2012, 18:12
Еще вопрос, как можно скрипт 2-го пункта:

"For /F "eol=; tokens=1* delims==" %%i In (%home%) Do Set %%i=%%j
PATH=%path1%" (ну или подобный/исправленный, этот пока не работает)

запустить не из BAT-файла, а из командной строки, набирая в одну строку?

popoves
29-02-2012, 20:59
Все разобрался, я ошибся в одной строчке, поэтому не работало.
В итоге BAT:
:: присваиваем результату поиска пути к cspwork.txt значение переменной %home%
For /F "tokens=*" %%i in ('dir /b /s /a -d C:\cspwork.txt') do set home=%%i
:: присваиваем переменной %path1% значение из файла после PATH=
For /F "eol=; tokens=1* delims==" %%i In (%home%) Do Set %%i=%%j
PATH=%path1%

Из командной строки:
For /F "tokens=*" %i in ('dir /b /s /a -d C:\cspwork.txt') do set home=%i
For /F "eol=; tokens=1* delims==" %i In (%home%) Do Set %i=%j; PATH=%path1%

Последний вопрос: Данные переменные, как я понял, создаются на время одной cmd сессии, т.е. после закрытия bat-файла или командной строки (во втором случае), эти переменные недоступны. Как можно сделать их доступными независимо от закрытия сессии, т.е. на определенный промежуток времени, или как-то в реестре (системе) навсегда зарегистрировать, а потом удалить?




© OSzone.net 2001-2012