Показать полную графическую версию : поиск файла.
нужно чтобы batник искал файл 123456.exe на диске С.
как это написать?
rust-02,
DIR /b/s/a-d C:\123456.exe
или
Where /r C:\ 123456.exe
для записи пути в переменную
for /f "tokens=*" %%a in ('Dir /b/s/a-d C:\hosts') Do Set $Path=%%a
Две первые командные строки выдадут Вам полный путь до искомого файла, третья
запишет путь к найденному файлу в переменную $Path
PS: Дальнейшие действия не предполагаются?
если кто знает,как можно этот путь передать в delphi?
rust-02,
А зачем? В DELPHI есть собственная функция поиска файлов: function FindFirst(const Path: string; Attr: Integer; var F: TSearchRec):
В Вашем случае будет что-то в таком духе:
findFirst('C:\','123456.exe',faAnyFile,sr)
если нужна форма, то примерно так:
procedure TForm1.Button1Click(Sender: TObject);
var sr:TSearchRec;
begin
findFirst('C:\','123456.exe',faAnyFile,sr)
edit1.Text:=sr.Name;
end;
выполнить в cmd можно так
uses ShellAPI;
procedure TForm1.Button1Click(Sender: TObject);
begin
ShellExecute(0,'open','cmd.exe','/k Where /r C:\ 123456.exe','C:\Windows\system32\',SW_SHOW);
end;
PPS: рекомендую Вам этот форум: DELPHI (http://www.cyberforum.ru/delphi/) и этот форум: DELPHISOURCES.RU (http://www.delphisources.ru/forum/index.php)
Подскажите пожалуйста. Я вот сделал таким образом поиск файла :
@echo on DIR /b/s/a-d D:\login.ini pause
Как мне теперь содержимое найденого файла вывести на экран ?
Aarons, смотрите выше (http://forum.oszone.net/post-1481826.html#post1481826) сообщение deepred'а:
for /f "tokens=*" %%a in ('Dir /b/s/a-d C:\hosts') Do Set $Path=%%a
У Вас будет аналогично — поиск, разбор, вывод [не проверялось]:
for /f "tokens=*" %%a in ('Dir /b/s/a-d D:\login.ini') Do type "%%a"
Ну вот, я сделал так :
for /f "tokens=*" %%a in ('Dir /b/s/a-d D:\login.ini') Do Set name=%%a
Файл находит. Теперь именно полное содержимое файла нужно занести в другую переменную.
Как это сделать ? )
Как мне теперь содержимое найденого файла вывести на экран ? »
Теперь именно полное содержимое файла нужно занести в другую переменную. Как это сделать ? »
Так что же всё-таки Вам нужно??? И зачем Вам нужно содержимое файла в переменной? Что будете делать дальше?
С выводом на экран разобрался, нужно теперь полностью содержимое файла в переменную.
В каком плане "зачем" ? Если попросил помощи - значит для чего то да и нужно.
Для быстрой работы мне нужно, чтоб нужный мне файл на кампьютере искался и выводился на экран его содержимое.
Но для этого я хочу это содержимое в переменную.
В каком плане "зачем" ? Если попросил помощи - значит для чего то да и нужно. »
С таким подходом — ждите, пока кто другой ответит. Дело Ваше. Я же не вижу смысла что-то делать, не видя конечной цели.
Внизу я подписывал для чего. Конечная цель вроде и так понятна. Найти файл, поместить его содержимое в переменную и вывести на экран.
Разве это так не понятно ?
Я спрашивал, про цель помещения содержимого файла в переменную, ибо для вывода содержимого файла на экран этот этап — вовсе не нужен.
Найти файл, поместить его содержимое в переменную и вывести на экран. »
@echo off
SETLOCAL EnableDelayedExpansion
::поиск файла
for /f "tokens=*" %%a in ('dir /b/s/a-d "D:\login.ini"') do set "name=%%a"
::чтение в "переменную" $v_
for /f %%a in ('^<"%name%" find/c /v ""') do set/a "$n=%%a"
for /f "tokens=1* delims=:" %%a in ('findstr/n $ "%name%"') do set "$v_%%a=%%b "
::вывод на экран из памяти
(echo %name%
echo ---------------------
for /l %%i in (1,1,%$n%) do @call echo\%%$v_%%i:~,-1%%
)|more
echo\&pause
- строка файла не должна начинаться на двоеточие ":"
- строки не должны содержать восклицательных знаков "!" и спецсимволов
- при желании можно учесть и эти случаи ценой усложнения скрипта
Конечная цель вроде и так понятна. »
Формально Iska прав: вывод файла на экран (пользователю) - "цель", предварительное сохранение данных в переменной (программером) - "средство". "Цель" всегда одна, "средств" - множество, вплоть до самых извращенных... типа "вывести именно батником" (шутка).
"средство" может стать "целью":
- в академических целях (задача из учебника);
- из-за дополнительных ограничений (политика безопасности, знание языка, особенности реализации и т.п.);
Все эти факторы крайне желательно оговаривать при постановке задачи.
Уважаемые Господа, а подскажите - как добавить в переменную из файла к примеру только первую и четвёртую строки. Другие пропустить.
Прошу прощения за надоедливость.
Merlin1975
19-02-2012, 22:31
А можно ли написать батник, чтобы он искал определенный файл и подменял его другим?
А можно ли написать батник, »
Можно.
чтобы он искал определенный файл »
Код наличествует в данной теме.
и подменял его другим? »
Поясните.
Anonymоus
19-02-2012, 23:19
Aarons, вот так:
@Echo Off
SetLocal EnableDelayedExpansion
:: Здесь указываем номера нужных строк
Set Strings=[1],[4]
Set i=0
For /F "usebackq delims=" %%A In ("C:\Documents and Settings\Inquisitor\Рабочий стол\Новая папка\config.pl") Do (
Set /A i+=1
Echo %Strings%|Find "[!i!]">nul && Set Result=!Result!%%A
)
Echo %Result%
Pause
Номера добавляемых строк пишутся в переменную Strings, в квадратных скобках, через запятую (последнее необязательно, исключительно для более аккуратной записи), результат в виде общего содержимого всех выбранных строк пишется в переменную Result. Например, если протестировать на файле с вот таким содержимым
one
two
three
four
five
То в Result окажется строка onefour
Anonymоus, если коллега Aarons не подписан на эту тему, то вряд ли он узнает о решении: скоро год как он не заходил на форум.
подскажите как реализовать такой батник ?
1 искать файл 1.exe по локальным дискам (может быть несколько)
2 если 1.exe найден по запускаем приложение A.exe от имени администратора, если ненайден то переходим к поиску файла 2.exe
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.