Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - поиск файла.

Ответить
Настройки темы
CMD/BAT - поиск файла.

Новый участник


Сообщения: 5
Благодарности: 0

Профиль | Отправить PM | Цитировать


нужно чтобы batник искал файл 123456.exe на диске С.
как это написать?

Отправлено: 00:00, 26-08-2010

 

Новый участник


Сообщения: 6
Благодарности: 0

Профиль | Отправить PM | Цитировать


Ребята помогите пожалуйста!
Следующая задача: 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, как убрать, т.к. не находит правильный путь

Последний раз редактировалось Petya V4sechkin, 13-03-2013 в 16:12.


Отправлено: 14:14, 13-03-2013 | #21



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Новый участник


Сообщения: 13
Благодарности: 0

Профиль | Отправить PM | Цитировать


Продолжая тему. нужно дописать в конфиг файл в юзерской папке несколько строк (настройка адресной книги из 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 - как указать здесь переменную пути?

Отправлено: 15:02, 25-10-2013 | #22


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


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

Отправлено: 15:25, 25-10-2013 | #23


Новый участник


Сообщения: 13
Благодарности: 0

Профиль | Отправить PM | Цитировать


касательно пользователя - при логине запускается скрипт (спс групповым политикам) (в ад есть строка параметры сценария- мб там можно указать именно запуск от логинившегося юзера, еще не смотрел что/как).
Соответственно на компе есть 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"); >> - как здесь конец выглядит?

Отправлено: 15:55, 25-10-2013 | #24


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Цитата Kryptonite:
как здесь конец выглядит? »
а что "здесь" скрипт должен делать?.. пример, если что, нерабочий
пример поиска 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
З.Ы. у пользователя должны быть права на запись целевую в папку

Отправлено: 16:22, 25-10-2013 | #25


Пользователь


Сообщения: 70
Благодарности: 19

Профиль | Отправить PM | Цитировать


Если в файле больше одной строки - то никак не занести его в переменную.
С одной строкой так:
Код: Выделить весь код
for /F "delims=" %%s in (file) do set var=%%s

-------
Разумный человек приспосабливается к миру, неразумный пытается приспособить мир к себе. Поэтому прогресс делают люди неразумные. (Дж. Б. Шоу)


Отправлено: 23:40, 26-10-2013 | #26


Новый участник


Сообщения: 13
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата amel27:
а что "здесь" скрипт должен делать? »
запись в файл текста, после ">>" указывается путь. (C:\1.js например)

Есть еще вариант не поиска текущего пользователя, а поиска последнего измененного prefs.js
тогда нужно поиск по C:\Users и найти самый новый
блин, еще у огнелиса такое же имя файла есть...........

Последний раз редактировалось Kryptonite, 28-10-2013 в 09:33.


Отправлено: 08:26, 28-10-2013 | #27


Новый участник


Сообщения: 13
Благодарности: 0

Профиль | Отправить PM | Цитировать


проблема решилась без костылей. в C:\Program Files (x86)\Mozilla Thunderbird\defaults\pref можно указать конфиг файл, с которого брать доп настройки и собственно написать еще один конфиг файл с нужными строками
благодарю всех за участие!

Отправлено: 11:43, 28-10-2013 | #28


Ветеран


Сообщения: 900
Благодарности: 86

Профиль | Отправить PM | Цитировать


Всем здравствуйте

Пожалуйста, помогите, хочется чем проще, тем лучше - как для понимания (немного въехать, понять, что и как), так и для реализации

Требуется найти файл 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

Спасибо.

Отправлено: 21:36, 23-02-2022 | #29


Ветеран


Contributor


Сообщения: 2733
Благодарности: 1698

Профиль | Отправить PM | Цитировать


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
При этом полУчите список пронумерованных переменных.
Пути и имя файла укажите свои.
Цитата SharkyEXE:
путь к файлу может содержать как пробелы, так и русские названия папок »
Сохраните батник в 866 кодировке.
Если Вы работаете с блокнотом (кодировка 1251) то после cls добавьте строку
Код: Выделить весь код
@Echo Off
cls
>nul Chcp 1251

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 24-02-2022 в 15:22.

Это сообщение посчитали полезным следующие участники:

Отправлено: 15:15, 24-02-2022 | #30



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - поиск файла.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] поиск файла по маске и запись этого имени в переменную ___dima___ Скриптовые языки администрирования Windows 20 18-06-2017 01:46
[решено] Рекурсивный поиск файла cra5h_ AutoIt 47 06-02-2010 11:38
[решено] Поиск файла на компьютере sashadeg AutoIt 12 30-01-2010 18:40
Разное - [решено] Поиск по типу файла 7human7 Microsoft Windows 7 2 25-11-2009 09:51
CMD/BAT - Как из бат-файла проверить наличие файла по ссылке, не скачивая файл ? mitiya Скриптовые языки администрирования Windows 2 27-06-2008 20:50




 
Переход