Компьютерный форум 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=229131)

popoves 29-02-2012 15:45 1869263

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

Iska 29-02-2012 16:04 1869277

popoves, что Вы уже сделали, и что у Вас не получается?

popoves 29-02-2012 17:42 1869337

Получилось следующее:

:: присваиваем результату поиска пути к 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 1869359

Еще вопрос, как можно скрипт 2-го пункта:

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

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

popoves 29-02-2012 20:59 1869501

Все разобрался, я ошибся в одной строчке, поэтому не работало.
В итоге 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-файла или командной строки (во втором случае), эти переменные недоступны. Как можно сделать их доступными независимо от закрытия сессии, т.е. на определенный промежуток времени, или как-то в реестре (системе) навсегда зарегистрировать, а потом удалить?


Время: 10:50.

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