Форум программистов, компьютерный форум, киберфорум
Наши страницы
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
DarkJoker1992
148 / 4 / 0
Регистрация: 19.02.2013
Сообщений: 369
1

Поиск файла на определённом диске с созданием лога и завершением выполнения команды после его нахождения

23.09.2014, 11:34. Просмотров 511. Ответов 6
Метки нет (Все метки)

Подскажите как найти файл на всём диске, я использовал такой код dir /b /s C:\name.txt >> log.txt
но он находит файл и идёт дальше искать =( а мне нужно что бы если нашол создал лог и закончил работу.
И ещё вопрос, каким кодом быстрее всего найти файл на компе? cmd или vbs?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.09.2014, 11:34
Ответы с готовыми решениями:

Поиск файла и его полного пути на диске
Нужно по имеющемуся имени файла (с расширением) найти его на диске, а потом выдать его...

После выполнения определённой команды не выполняются последующие команды
Объясните, пожалуйста, почему может останавливаться выполнение второй и далее комманд? cd...

Поиск и удаление определённого файла в определённом каталоге
Как в каталоге LOCAL (там же много папок) найти и удалить файл readmy.doc в cmd?

Выполнения команды после завершения предыдущей
Добрый день, Требуется выполнить команду rmdir после завершения удаления программы. Переменная...

Поиск определённой строки в выводе результата выполнения команды
Доброго времени суток. Столкнулся с проблемой поиска строки, содержащей только числовое...

6
sov44
1760 / 744 / 128
Регистрация: 09.04.2011
Сообщений: 1,314
23.09.2014, 12:42 2
Bash
1
2
if /i exist "c:\name.txt" (>log.txt echo yes name.txt) else (echo not exist name.txt)
pause
0
DarkJoker1992
148 / 4 / 0
Регистрация: 19.02.2013
Сообщений: 369
23.09.2014, 13:25  [ТС] 3
не совсем то что мне нужно но близко,
нужно что бы искал на всём диске C. а когда находит останавливался и вписывал путь где находится файл в log.txt
0
Dragokas
Эксперт WindowsАвтор FAQ
17058 / 7113 / 861
Регистрация: 25.12.2011
Сообщений: 10,924
Записей в блоге: 16
23.09.2014, 13:51 4
Цитата Сообщение от DarkJoker1992 Посмотреть сообщение
cmd или vbs?
Близко.
Только на cmd нужно вручную писать рекурсивную функцию вместо использования ключа /s,
чтобы добиться той же скорости.
0
DarkJoker1992
148 / 4 / 0
Регистрация: 19.02.2013
Сообщений: 369
23.09.2014, 22:31  [ТС] 5
-_- ничё не понял. . . не могли бы вы мне скинуть рабочий код, Пожалуйста

Добавлено через 8 часов 28 минут
помогите с кодом пожалуйста
0
R71MT
5343 / 1500 / 317
Регистрация: 29.07.2014
Сообщений: 2,524
Записей в блоге: 5
23.09.2014, 22:40 6
Цитата Сообщение от DarkJoker1992 Посмотреть сообщение
а мне нужно что бы если нашол создал лог и закончил работу.
...чё за бред! Раз ты дал поиск, то он должен отработать
0
Dragokas
Эксперт WindowsАвтор FAQ
17058 / 7113 / 861
Регистрация: 25.12.2011
Сообщений: 10,924
Записей в блоге: 16
24.09.2014, 17:07 7
DarkJoker1992, у Вас учебная или практическая задача?

CMD:
Кликните здесь для просмотра всего текста
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@echo off
Setlocal EnableExtensions
 
set StartFolder=C:
set mask=lib4758cca.*
 
call :rDir "%StartFolder%" "%mask%"
echo "%ret%"
pause
Goto :eof
 
:rDir
  ::echo "%~1"
  For /F "delims=" %%a in ('dir /b /a-d-l "%~1\%~2" 2^>NUL') do set "ret=%~1\%%a"& Exit /B 1
  For /F "delims=" %%a in ('dir /b /ad-l "%~1\*" 2^>NUL') do call :rDir "%~1\%%a" "%~2" || Exit /B 1
Exit /B


Если не предполагается использовать маску:
(иначе нужно еще регулярку добавлять)

VBSCRIPT:
Кликните здесь для просмотра всего текста
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Option Explicit
Dim StartFolder, Target, oFSO, Root, Detected
 
StartFolder = "C:"
Target = "lib4758cca.so"
 
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set Root = oFSO.GetFolder(StartFolder)
Detected = scanFolder (Root, Target)
WScript.Echo (Detected)
 
Function scanFolder(oFolder, Target)
    On Error Resume Next ' обход ошибок "Access Denied"
    Dim ret, oFile, oSubFolder
 
    If oFolder.Attributes And 1024 Then Exit Function 'проходим мимо симлинков
    
    For Each oFile In oFolder.Files
        If StrComp(oFile.Name, Target, 1) = 0 then scanFolder = oFile.Path: Exit Function
    Next
    For Each oSubFolder In oFolder.Subfolders
        scanFolder = scanFolder (oSubFolder, Target) 'рекурсия !!!
        if scanFolder <> vbNullString then Exit Function
    Next
End Function


Для очень больших массивов информации подойдет только LogParser.
Вот пример: http://www.cyberforum.ru/post4581376.html
В принципе можно сделать тоже инкрементно, подавая в SQL-запрос отдельно каждую из папок корня диска.
Еще луче почитать справку, возможно там уже есть опция останова при первом найденном совпадении.
0
24.09.2014, 17:07
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.09.2014, 17:07

Требуется произвести дебаг после выполнения команды
5) Сохраните следующий код в файле Debug_Test.m: function =Debug_Test(x) xmu=mean(x);...

Вывести направление робота после выполнения полученной команды
Здравствуйте! Условие задачи: Робот может перемещаться в четырех направлениях («С» — север, «З» —...

Что сохраняется в стеке, после выполнения команды INT
SS,SP,AX FLAGS,CS,IP FLAGS,SS,IP FLAGS,CS,AX я думаю вот это FLAGS,CS,IP FLAGS,CS,AX


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru