Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 07.06.2024
Сообщений: 17

Поиск пути файла для CMD

03.03.2025, 21:21. Показов 1234. Ответов 15

Студворк — интернет-сервис помощи студентам
Добрый вечер. Прошу помощи, так как сам уже не могу разобраться. 3 день ломаю голову.
Общая картина: Хочу чтобы при выборе определенного пункта в командной строке срабатывал скрипт который:
Как я это вижу
1) Проводил проверку какие логические диски(не сетевые) на данный момент есть в системе
2) Получившийся список список дисков передавал в следующую команду которая по этим дискам(не по корню диска а по всему диску) ищет файл.ЕХЕ (название файла статично) и путь к нему.
3) Потом этот файл.ЕХЕ копировал в папку (АДРЕС ЭТОЙ ПАПКИ БУДЕТ СТАТИЧЕН)
Кто то может помочь с этой задачей, буду очень благодарен.
Что у меня получилось.
1) логические диски
Windows Batch file
1
fsutil fsinfo drives
но не знаю как передать дальше
2) Вообще только что получилось
Windows Batch file
1
WHERE /R c:\ myfile.txt & WHERE /R d:\ myfile.txt
3) Копирование
Windows Batch file
1
copy C:\file.exe*.* D:\>nul
Заранее всем не равнодушным спасибо.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.03.2025, 21:21
Ответы с готовыми решениями:

Запуск cmd файла с определенного места в его коде из другого cmd файла
Здравствуйте. Требуется команда для запуска батника с метки внутри него, а не с первой команды в нем. Как выразиться яснее не придумал.

Поиск файлов по ключевому слову в их именах и перемещение найденных в новую папку с выводом на экран их числа
Суть вопроса такова. В папке имеется файл(-ы), содержащие в названии ключевое слово, но название целиком заранее не известно; По запуску...

Ограничить пользователя в одной программе путем ее запуска через bat-файл с параметрами
Доброго времени суток. Такая беда: Имеется системник, win7, пьяные люди орут в караоке. Нужно ограничить этих "людей"...

15
6668 / 2829 / 1088
Регистрация: 06.06.2017
Сообщений: 9,600
03.03.2025, 23:02
С сохранением структуры, если их несколько и чтобы знать, где лежало:
Windows Batch file
1
@for /f %%d in ('2^>nul wmic LogicalDisk where "DriveType=3 And MediaType=12" Get Name^|find ":"') do @robocopy %%~dd D:\OutPut program.exe /ndl /nfl /njh /njs /s
1
0 / 0 / 0
Регистрация: 07.06.2024
Сообщений: 17
03.03.2025, 23:13  [ТС]
Спасибо за ответ. Но я новичок в этом деле , даже очень новичок. Не совсем понял Ваш ответ. Что понял что этот код должен сохранять куда-то в файл список дисков а как ич то не понял.
0
6668 / 2829 / 1088
Регистрация: 06.06.2017
Сообщений: 9,600
03.03.2025, 23:31
Цитата Сообщение от Yurii_Ge Посмотреть сообщение
Что понял что этот код должен сохранять куда-то в файл список дисков
В какой ещё "файл список дисков"? Он делает то, что запрошено, только со структурой каталогов.
Всё, что нужно заменить на свои данные, это D:\OutPut program.exe.
1
0 / 0 / 0
Регистрация: 07.06.2024
Сообщений: 17
04.03.2025, 00:01  [ТС]
Понял спасибо. Но есть нюанс , он сохранил в папку структуру и она весит 10 ГБ. Возможно ли без нее? Для понимания:
Есть утилита для удаленного выполнения команд на компьютере который находится в одной сети. Чтобы команды работали из под CMD пользователя нужно в папку C:\Windows\System32 закинуть исполняемый файл PsExec.exe, PsExec64.exe. Файлик CMD и сами .EXE скидываю на флешку. Пользователь просто запускает файлик CMD выбирает цифру 01 и происходит поиск файла и копирование в нужную системную папку.
0
6668 / 2829 / 1088
Регистрация: 06.06.2017
Сообщений: 9,600
04.03.2025, 00:36
Цитата Сообщение от Yurii_Ge Посмотреть сообщение
и она весит 10 ГБ.
При правильно замене, она не будет столько весить.

Цитата Сообщение от Yurii_Ge Посмотреть сообщение
Файлик CMD и сами .EXE скидываю на флешку.
И зачем искать на всех дисках то, что сложено только на флешке?

Цитата Сообщение от Yurii_Ge Посмотреть сообщение
Пользователь просто запускает файлик CMD выбирает цифру 01 и происходит поиск файла и копирование в нужную системную папку.
Опять новые вводные... 01 - это две цифры. Что за ними скрыто?
1
0 / 0 / 0
Регистрация: 07.06.2024
Сообщений: 17
04.03.2025, 00:55  [ТС]
Цитата Сообщение от FlasherX Посмотреть сообщение
Get Name^|find
Цитата Сообщение от FlasherX Посмотреть сообщение
При правильно замене, она не будет столько весить.
Заменил на
Windows Batch file
1
@for /f %%d in ('2^>nul wmic LogicalDisk where "DriveType=3 And MediaType=12" Get Name^|find ":"') do @robocopy %%~dd C:\OutPut prog.exe /ndl /nfl /njh /njs /s
для теста
Цитата Сообщение от FlasherX Посмотреть сообщение
И зачем искать на всех дисках то, что сложено только на флешке?
Так как на компьютере может быть как один диск логический так и три и плюс флешка пользователя. Плюс запуск будит или с флешки или эту папку перекидывать на пк будем( по возможности.
Цитата Сообщение от FlasherX Посмотреть сообщение
Опять новые вводные... 01 - это две цифры. Что за ними скрыто?
сам код уже написан, мне нужно вставить код о котором я говорю в водимое значение :02 (кпримеру. Это я уже сделал. Это не нужно. Это я для полноты картины написал. Еще раз прошу прощения. Если чем-то Вас может быть обидел. Но не все понятно с разу.

Добавлено через 11 минут
По итогу:
Нужно найти файлы PsExec.exe, PsExec64.exe во всех существующих локальных дисках ( они могут быть или на флешке или на диске d или с)
И скопировать в системную папку C:\Windows\System32
Выходные данные в дальнейшем не потребуются. Это единожды делается или при переустановке ОС. То есть разово.
0
6668 / 2829 / 1088
Регистрация: 06.06.2017
Сообщений: 9,600
04.03.2025, 02:09
Цитата Сообщение от Yurii_Ge Посмотреть сообщение
Плюс запуск будит или с флешки или эту папку перекидывать на пк будем( по возможности.
Не понимаю такого подхода с "или". Почему нельзя просто искать в папке рядом с батником? Зачем тратить кучу времени на поиск на всех дисках? Это нерационально. Ладно ещё использовать Everything с es.exe, тогда было без разницы, но это ...

Цитата Сообщение от Yurii_Ge Посмотреть сообщение
Если чем-то Вас может быть обидел. Но не все понятно с разу.
Тут не на что обижаться, но новоявленные условия добавляют лишние хлопоты, что не может не напрягать.
1
0 / 0 / 0
Регистрация: 07.06.2024
Сообщений: 17
04.03.2025, 10:56  [ТС]
Я вас понял. Но если возможно как то это максимально просто сделать , без сохранения каталога. было бы хорошо. Вопрос открыт еще и актуален.
0
6668 / 2829 / 1088
Регистрация: 06.06.2017
Сообщений: 9,600
04.03.2025, 14:44
Цитата Сообщение от Yurii_Ge Посмотреть сообщение
без сохранения каталога
Что имеется в виду? В надежде, что сторонняя утилита через поиск найдётся где-то ещё? Я в таком случае не понимаю разговоры о флешке и перекидывании.
1
0 / 0 / 0
Регистрация: 07.06.2024
Сообщений: 17
04.03.2025, 15:04  [ТС]
Вы меня еще раз простите, я наверно не все еще понимаю. А именно работы команд. я хочу чтобы код искал файлы PsExec.exe, PsExec64.exe в независимости от их расположения и просто скопировал в папку по пути C:\Windows\System32.
Без создавания каких то дополнительных файлов путей и так далее. Почему такая задача. Так как Папку с файлом CMD и файлами PsExec.exe, PsExec64.exe они могут сохранить к себе на компьютер (и забыть об этом например) а только потом по необходимости ей воспользоваться или пользоваться только флешкой. Если это не реализуемо просто прошу мне об этом сказать или очень сложно это сделать если тоже прошу сообщить. В моем понимании просто было что командой
Windows Batch file
1
fsutil fsinfo drives
узнаю какие диски и передаю выходящую информацию следующей команде
Windows Batch file
1
2
WHERE /R c:\ PsExec.exe & WHERE /R d:\ PsExec.exe
WHERE /R c:\ PsExec64.exe & WHERE /R d:\ PsExec64.exe
она находит путь до файла и передает информацию следующей команде
Windows Batch file
1
copy C:\PsExec.exe, PsExec64*.* C:\Windows\System32
И получается все без сохранения чего либо. Вот так хотел я это реализовать.
0
6668 / 2829 / 1088
Регистрация: 06.06.2017
Сообщений: 9,600
04.03.2025, 15:14
Вы повторяяте то же, с чего начали. А я спросил про это:
Цитата Сообщение от Yurii_Ge Посмотреть сообщение
Плюс запуск будит или с флешки или эту папку перекидывать на пк будем( по возможности.
Объясните эти моменты подробнее. Что тут и зачем?
1
0 / 0 / 0
Регистрация: 07.06.2024
Сообщений: 17
04.03.2025, 16:30  [ТС]
Как я и сказал выше, пользователь может запустить файлик CMD или с флешки или с компьютера (если перекинет к себе на ПК, а в файлике CMD просто нажмет к примеру цифру 01 и произайдет отработка скрипта ( ищем файл PsExec.exe, PsExec64 - на всех носителях - нашли и узнали путь расположения - копируем из этого расположения в папку по пути C:\Windows\System32)

Добавлено через 1 минуту
Команда fsutil fsinfo drives для этого и нужна чтобы понять какие носители есть , чтобы исключить проверки дисков без USB носителей.

Добавлено через 1 час 7 минут
Я решил так как получилось)) Вот решение как я и хотел. Наверно не идеальное но решение)
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
@echo off
setlocal EnableDelayedExpansion
 
:: Имя файла, который нужно найти
set FileToFind="myfile.txt"
 
:: Папка назначения
set Destination=C:\
 
:: Перебираем все буквы дисков
for %%d in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
    if exist %%d:\ (
        echo Поиск файла %FileToFind% на диске %%d:
        for /R %%d:\ %%f in (%FileToFind%) do (
            echo Файл найден: %%~ff
            copy "%%~ff" "%Destination%" >nul
        )
    )
)
 
echo Готово!
pause
Спасибо огромное FlasherX за отзывчивость. Написал Практически сразу. Уточнял информацию. Он один и единственный кто откликнулся. Еще раз спасибо. И да решение было им предоставлено именно со стороны профессионала. Со стороны как лучше.) Просто по незнанию своему у мня не получилось разобраться.
0
6668 / 2829 / 1088
Регистрация: 06.06.2017
Сообщений: 9,600
04.03.2025, 17:11
Лучший ответ Сообщение было отмечено Yurii_Ge как решение

Решение

Yurii_Ge, fsutil требует повышенных прав. Перебирать все буквы можно, но лучше сразу отфильтровать. И в любом случае нужен выход после копирования, иначе будет куча лишних итараций и попыток скопировать. Вот так нужно:
Windows Batch file
1
2
3
4
5
6
7
8
@echo off
pushd %windir%\system32
if not exist psexec.exe (
for /f %%d in ('2^>nul wmic LogicalDisk where "FreeSpace>0" Get Name^|find ":"') do (
for /f "delims= eol=" %%f in ('2^>nul dir/a-d/b/s %%~dd\psexec.exe %%~dd\psexec64.exe') do (
   robocopy "%%~dpf " "%cd%" "%%~nxf" /ndl /nfl /njh /njs>nul
   if exist psexec.exe if exist psexec64.exe exit
)))
+ robocopy в отличии от copy сохраняет метки времени файла.
1
0 / 0 / 0
Регистрация: 07.06.2024
Сообщений: 17
04.03.2025, 17:28  [ТС]
Понял. И этот скрит ни где дополнительные файлы или папки не создает, как прошлый? Я правильно понимаю?
Просто я глянул что, команда PUSHD используется для запоминания текущего каталога в виртуальном стеке. Но не понимаю что такое виртуальный стек? Буфер обмена типо или как?
0
6668 / 2829 / 1088
Регистрация: 06.06.2017
Сообщений: 9,600
04.03.2025, 17:31
Не создаёт.
Выполните pushd /? в cmd. Там ничего не сказано про виртуальный стек.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.03.2025, 17:31
Помогаю со студенческими работами здесь

Учебник по созданию *.BAT и *.CMD файлов
Дайте ссылку на хороший учебник по созданию *.BAT и/или *.CMD файлов.

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

Поиск на компьютере INI-файла и копирование найденного файла в папку определенного пользователя
Нужна ваша помощь! Нужно найти файл с расширением .ini и скопировать его в папку Пользователи\(имя пользователя. на каждом компьютере...

Можно ли средствами cmd объединить однотипные XML-файлы в один?
Дано: очень много однотипных файлов xml вида: <?xml version="1.0" encoding="WINDOWS-1251"?>...

Рекурсивный поиск файлов по списку с последующим перемещением найденых в единую папку
Здравствуйте, подскажите, пожалуйста, как можно найти файлы в каталоге (который я укажу) и во всех его каталогов/подкаталогов, а потом...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Unity 4D
GameUnited 13.06.2025
Четырехмерное пространство. . . Звучит как что-то из научной фантастики, правда? Однако для меня, как разработчика со стажем в игровой индустрии, четвертое измерение давно перестало быть абстракцией из. . .
SSE (Server-Sent Events) в ASP.NET Core и .NET 10
UnmanagedCoder 13.06.2025
Кажется, Microsoft снова подкинула нам интересную фичу в новой версии фреймворка. Работая с превью . NET 10, я наткнулся на нативную поддержку Server-Sent Events (SSE) в ASP. NET Core Minimal APIs. Эта. . .
С днём независимости России!
Hrethgir 13.06.2025
Решил побеседовать, с утра праздничного дня, с LM о завоеваниях. То что она написала о народе, представителем которого я являюсь сам сначала возмутило меня, но дальше только смешило. Это чисто. . .
Лето вокруг.
kumehtar 13.06.2025
Лето вокруг. Наполненное бурями и ураганами событий. На фоне магии Жизни, священной и вечной, неумелой рукой человека рисуется панорама душевного непокоя. Странные серые краски проникают и. . .
Популярные LM модели ориентированы на увеличение затрат ресурсов пользователями сгенерированного кода (грязь -заслуги чистоплюев).
Hrethgir 12.06.2025
Вообще обратил внимание, что они генерируют код (впрочем так-же ориентированы разработчики чипов даже), чтобы пользователь их использующий уходил в тот или иной убыток. Это достаточно опытные модели,. . .
Топ10 библиотек C для квантовых вычислений
bytestream 12.06.2025
Квантовые вычисления - это та область, где теория встречается с практикой на границе наших знаний о физике. Пока большая часть шума вокруг квантовых компьютеров крутится вокруг языков высокого уровня. . .
Dispose и Finalize в C#
stackOverflow 12.06.2025
Работая с C# больше десяти лет, я снова и снова наблюдаю одну и ту же историю: разработчики наивно полагаются на сборщик мусора, как на волшебную палочку, которая решит все проблемы с памятью. Да,. . .
Повышаем производительность игры на Unity 6 с GPU Resident Drawer
GameUnited 11.06.2025
Недавно копался в новых фичах Unity 6 и наткнулся на GPU Resident Drawer - штуку, которая заставила меня присвистнуть от удивления. По сути, это внутренний механизм рендеринга, который автоматически. . .
Множества в Python
py-thonny 11.06.2025
В Python существует множество структур данных, но иногда я сталкиваюсь с задачами, где ни списки, ни словари не дают оптимального решения. Часто это происходит, когда мне нужно быстро проверять. . .
Работа с ccache/sccache в рамках C++
Loafer 11.06.2025
Утилиты ccache и sccache занимаются тем, что кешируют промежуточные результаты компиляции, таким образом ускоряя последующие компиляции проекта. Это означает, что если проект будет компилироваться. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
OSZAR »