Показать полную графическую версию : поиск файла.
Mikhail_R
13-03-2013, 14:14
Ребята помогите пожалуйста!
Следующая задача: 1. Найти значение в реестре (переменная среды) и если она существует, то запустить Google Chrome
2. Если ее нет, то найти exe-шник google chrome и записать его путь в значение переменной, чтобы обращаться к ней для последующего запуска хрома
Все это необходимо для запуска хрома с определенными параметрами!
вот код, который работает на некоторых компах, а на некоторых нет
@echo off
rmdir c:\GoogleChrome\ERK_Cache\ /s /q
mkdir c:\GoogleChrome\ERK_Cache\
set errorlevel=0
For /F "Tokens=2*" %%I In ('Reg Query "HKCU\Environment" /V PATH_CHROME') Do Set PATH_CHROME=%%I
if %PATH_CHROME% == REG.EXE goto RegAdding
cd %PATH_CHROME%
start chrome.exe --disk-cache-size=274258963 --app= --disk-cache-dir="c:\GoogleChrome\Cache"
goto end
:RegAdding
set PATH_CHROME=
for /f "tokens=*" %%a in ('Dir /b/s/a-d C:\chrome.exe') do set PATH_CHROME=%%a
reg add HKCU\Environment /v PATH_CHROME /t REG_SZ /d "%PATH_CHROME%" /f
cd %PATH_CHROME%
start chrome.exe --disk-cache-size=274258963 --app= --disk-cache-dir="c:\GoogleChrome\Cache"
:end
PS.: если будут идеи как легче или лучше организовать, буду всеми руками и ногами за них, спасибо!!!
Добрый день!
Необходимо найти exe файл и добавить в переменную значение пути к нем
данный код добавляет и chrome.exe в значение переменной, что выдает ошибку при дальнейшем запуске, как убрать это оттуда
for /f "tokens=*" %%a in ('Dir /b/s/a-d C:\chrome.exe') do set PATH_CHROME=%%a
Спасибо!
for /f "tokens=*" %%a in ('Dir/b/s/a-d C:\chrome.exe') do set PATH_CHROME=%%a
Находит файл, но записывает к нему в в конце c:\Documents and Settings\.....\chrome.exe, как убрать, т.к. не находит правильный путь
Kryptonite
25-10-2013, 15:02
Продолжая тему. нужно дописать в конфиг файл в юзерской папке несколько строк (настройка адресной книги из AD в thunderbird-е)
соответственно файл лежит в папке вида C:\Users\current_user\AppData\Roaming\Thunderbird\Profiles\kcab2bup.default
так как юзеров на машине с профилем TB может быть несколько, то просто поиск по C:\Users выдаст несколько файлов
собственно вопросы-
как искать в папке текущего пользователя? +скрипт будет запускаться вероятно от системы/админа- мб это как-то помешает?
дальше for /f "tokens=*" %%a in ('Dir /b/s/a-d C:\hosts') Do Set $Path=%%a путь задается в переменную- тут все без изменений?
собственно запись в файл echo "text" >> c:\somefile.txt - как указать здесь переменную пути?
Kryptonite,
1. по своему смыслу, "текущий" = "под которым запущен скрипт"
может быть одновременно >1 залогиненного пользователя (удаленно, планировщик и т.п.)
2. код ищет все файлы "hosts" на диске C: , именно это и нужно?.. еще вариант:
for /f "tokens=*" %%a in ('dir /b/s/a-d c:\users\hosts') do (
set "$Path=%%a"
call echo %%$Path%%
)
3. Один из способов приведен в п.2
Kryptonite
25-10-2013, 15:55
касательно пользователя - при логине запускается скрипт (спс групповым политикам) (в ад есть строка параметры сценария- мб там можно указать именно запуск от логинившегося юзера, еще не смотрел что/как).
Соответственно на компе есть N учеток, надо чтобы в CMD указывался current_user- тот кто залогинился. Например по дате последнего вызова, из таскменеджера- не знаю как, экспы мало.
Соответственно команда на поиск pref.js именно в папке этого пользователя
про запись в файл не понял
Where /r C:\ 1.js
for /f "tokens=*" %%a in ('dir /b/s/a-d c:\users\hosts') do (
set "$Path=%%a"
call echo %%$Path%%
)
Echo user_pref("ldap_2.autoComplete.directoryServer", "ldap_2.servers.pl1_1"); >> - как здесь конец выглядит?
как здесь конец выглядит? »а что "здесь" скрипт должен делать?.. пример, если что, нерабочий
пример поиска pref.js в профиле текущего пользователя и вывод пути в файл C:\LOGS\User.log:
@echo off
set "LogPath=C:\LOGS\"
if not exist %LogPath% md %LogPath%
(
for /f "delims=" %%a in ('dir /b/s/a-d c:\users\%UserName%\pref.js') do echo %%a
)>%LogPath%\%UserName%.log
З.Ы. у пользователя должны быть права на запись целевую в папку
Гуллипут
26-10-2013, 23:40
Если в файле больше одной строки - то никак не занести его в переменную.
С одной строкой так:
for /F "delims=" %%s in (file) do set var=%%s
Kryptonite
28-10-2013, 08:26
а что "здесь" скрипт должен делать? »
запись в файл текста, после ">>" указывается путь. (C:\1.js например)
Есть еще вариант не поиска текущего пользователя, а поиска последнего измененного prefs.js
тогда нужно поиск по C:\Users и найти самый новый
блин, еще у огнелиса такое же имя файла есть...........
Kryptonite
28-10-2013, 11:43
проблема решилась без костылей. в C:\Program Files (x86)\Mozilla Thunderbird\defaults\pref можно указать конфиг файл, с которого брать доп настройки и собственно написать еще один конфиг файл с нужными строками
благодарю всех за участие!
SharkyEXE
23-02-2022, 21:36
Всем здравствуйте
Пожалуйста, помогите, хочется чем проще, тем лучше - как для понимания (немного въехать, понять, что и как), так и для реализации
Требуется найти файл 1.exe на диске C:\, включая неограниченную глубину подпапок, путь к файлу может содержать как пробелы, так и русские названия папок
Когда файл 1.exe найдется, требуется записать в переменную full_path полный путь к файлу, включая расширение, например, если файл 1.exe найдется в папке C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup, то в переменной full_path должно быть прописано C:\Users\Администратор\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\1.exe
Спасибо.
megaloman
24-02-2022, 15:15
SharkyEXE, Если Вы уверены, что искомый файл один, то:@Echo Off
cls
Set "BoxIn=D:"
Set "FFile=я22022410.bat"
FOR /F "usebackq delims=" %%f In (`2^>nul Where /R "%BoxIn%" "%FFile%"`) DO Set "full_path=%%f"
Echo full_path= "%full_path%"
Pause
Exit /B
При этом в переменной полУчите последний найденный.
Если файлов может быть несколько, то:@Echo Off
cls
Set "BoxIn=D:"
Set "FFile=я22022410.bat"
Set /A N=0
FOR /F "usebackq delims=" %%f In (`2^>nul Where /R "%BoxIn%" "%FFile%"`) DO (
Set /A N+=1
Call Set "full_path_%%N%%=%%f"
)
Set "full_path_"
Pause
Exit /B
При этом полУчите список пронумерованных переменных.
Пути и имя файла укажите свои.путь к файлу может содержать как пробелы, так и русские названия папок »Сохраните батник в 866 кодировке.
Если Вы работаете с блокнотом (кодировка 1251) то после cls добавьте строку@Echo Off
cls
>nul Chcp 1251
Гуллипут
26-02-2022, 08:25
Всем здравствуйте
Пожалуйста, помогите, хочется чем проще, тем лучше - как для понимания (немного въехать, понять, что и как), так и для реализации
Требуется найти файл 1.exe на диске C:\, включая неограниченную глубину подпапок, путь к файлу может содержать как пробелы, так и русские названия папок
Когда файл 1.exe найдется, требуется записать в переменную full_path полный путь к файлу, включая расширение, например, если файл 1.exe найдется в папке C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup, то в переменной full_path должно быть прописано C:\Users\Администратор\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\1.exe
Спасибо.
cd /d C:
for /R %%f in (1.exe) do if exist "%%f" set full_path=%%f
echo full_path=%full_path%
Так в переменной окажется путь к последнему из всех найденных файлов 1.exe.
Если нужна информация обо всех найденных файлах, то можно вывести её в ходе поиска в файл:
cd /d C:
copy nul found.txt
for /R %%f in (1.exe) do if exist "%%f" (
set full_path=%%f
>>found.txt echo %%f
)
echo full_path=%full_path%
pause
more found.txt
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC