Войти

Показать полную графическую версию : поиск файла.


Страниц : [1] 2

rust-02
26-08-2010, 00:00
нужно чтобы batник искал файл 123456.exe на диске С.
как это написать?

deepred
26-08-2010, 01:10
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: Дальнейшие действия не предполагаются?

rust-02
26-08-2010, 10:01
если кто знает,как можно этот путь передать в delphi?

deepred
26-08-2010, 11:39
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)

Aarons
04-03-2011, 01:41
Подскажите пожалуйста. Я вот сделал таким образом поиск файла :
@echo on DIR /b/s/a-d D:\login.ini pause

Как мне теперь содержимое найденого файла вывести на экран ?

Iska
04-03-2011, 06:48
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"

Aarons
04-03-2011, 19:53
Ну вот, я сделал так :
for /f "tokens=*" %%a in ('Dir /b/s/a-d D:\login.ini') Do Set name=%%a
Файл находит. Теперь именно полное содержимое файла нужно занести в другую переменную.
Как это сделать ? )

Iska
05-03-2011, 07:12
Как мне теперь содержимое найденого файла вывести на экран ? »
Теперь именно полное содержимое файла нужно занести в другую переменную. Как это сделать ? »
Так что же всё-таки Вам нужно??? И зачем Вам нужно содержимое файла в переменной? Что будете делать дальше?

Aarons
05-03-2011, 14:59
С выводом на экран разобрался, нужно теперь полностью содержимое файла в переменную.

В каком плане "зачем" ? Если попросил помощи - значит для чего то да и нужно.
Для быстрой работы мне нужно, чтоб нужный мне файл на кампьютере искался и выводился на экран его содержимое.
Но для этого я хочу это содержимое в переменную.

Iska
05-03-2011, 18:56
В каком плане "зачем" ? Если попросил помощи - значит для чего то да и нужно. »
С таким подходом — ждите, пока кто другой ответит. Дело Ваше. Я же не вижу смысла что-то делать, не видя конечной цели.

Aarons
05-03-2011, 22:12
Внизу я подписывал для чего. Конечная цель вроде и так понятна. Найти файл, поместить его содержимое в переменную и вывести на экран.

Разве это так не понятно ?

Iska
06-03-2011, 05:23
Я спрашивал, про цель помещения содержимого файла в переменную, ибо для вывода содержимого файла на экран этот этап — вовсе не нужен.

amel27
06-03-2011, 05:54
Найти файл, поместить его содержимое в переменную и вывести на экран. »
@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

- строка файла не должна начинаться на двоеточие ":"
- строки не должны содержать восклицательных знаков "!" и спецсимволов
- при желании можно учесть и эти случаи ценой усложнения скрипта

amel27
06-03-2011, 06:47
Конечная цель вроде и так понятна. »
Формально Iska прав: вывод файла на экран (пользователю) - "цель", предварительное сохранение данных в переменной (программером) - "средство". "Цель" всегда одна, "средств" - множество, вплоть до самых извращенных... типа "вывести именно батником" (шутка).

"средство" может стать "целью":

- в академических целях (задача из учебника);
- из-за дополнительных ограничений (политика безопасности, знание языка, особенности реализации и т.п.);

Все эти факторы крайне желательно оговаривать при постановке задачи.

Aarons
07-03-2011, 02:46
Уважаемые Господа, а подскажите - как добавить в переменную из файла к примеру только первую и четвёртую строки. Другие пропустить.

Прошу прощения за надоедливость.

Merlin1975
19-02-2012, 22:31
А можно ли написать батник, чтобы он искал определенный файл и подменял его другим?

Iska
19-02-2012, 22:46
А можно ли написать батник, »
Можно.

чтобы он искал определенный файл »
Код наличествует в данной теме.

и подменял его другим? »
Поясните.

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

Iska
20-02-2012, 01:42
Anonymоus, если коллега Aarons не подписан на эту тему, то вряд ли он узнает о решении: скоро год как он не заходил на форум.

keda
28-03-2012, 14:39
подскажите как реализовать такой батник ?

1 искать файл 1.exe по локальным дискам (может быть несколько)
2 если 1.exe найден по запускаем приложение A.exe от имени администратора, если ненайден то переходим к поиску файла 2.exe




© OSzone.net 2001-2012