Я пытаюсь создать пакетный файл, который вернет местоположение файла, включая раздел (или диск), чтобы я мог использовать его для большего количества манипуляций в этом пакетном файле. Имя файла известно, но раздел и каталог неизвестны. Это возможно?поиск файлов по разделам в пакетных файлах
1
A
ответ
0
Вы можете попробовать что-то вроде этого:
@echo off
Title Searching for file by name
Mode con cols=75 lines=3
cls & color 0A
Set SearchResult=SearchResult.txt
If Exist %SearchResult% Del %SearchResult%
echo(
set /P "FileName=Type the file name for looking for = "
Setlocal EnableDelayedExpansion
for /f "tokens=2" %%i in ('wmic logicaldisk where "drivetype=3" ^|find /i ":"') do (
Set MyDrive=%%i
echo(& cls
echo( & echo Please Wait for moment .... Searching for "%FileName%" on "!MyDrive!\"
@where /r !MyDrive!\ "%FileName%" >> %SearchResult%
)
Start %SearchResult%
0
Следующий сценарий - назовем его findfile.bat
- ищет файл с именем, заданным в качестве аргумента командной строки (например, findfile.bat "lostfile.txt"
) на локальные диски и сетевые диски в качестве примера:
@echo off
for /F "skip=1" %%I in (
'wmic LOGICALDISK WHERE ^(^
DriveType^=3 OR^
DriveType^=4^
^) GET DeviceID'
) do (
for /F "delims=" %%J in ("%%I") do (
2> nul where /R %%J\ "%~1"
)
)
wmic
команда используются для извлечения дисков, доступных в текущей системе. В примере допустимы два допустимых значения DriveType
: 3
, что означает локальные диски, и 4
, что означает сетевые диски. Вы можете адаптировать фильтр по своему усмотрению - ссылочный сайт Win32_LogicalDisk class для всех возможных значений. Чтобы не фильтровать типы дисков, просто удалите весь пункт WHERE
и вместо этого используйте оставшуюся wmic
командную строку wmic LOGICALDISK GET DeviceID
.
Редактировать свой вопрос и опубликовать код, который вы пробовали до сих пор! – Hackoo
Поиск определенного файла на одном диске, например. г. 'C:', вы можете использовать 'where/R C: \" filename.ext "'; для этого на нескольких дисках вы можете использовать цикл 'for', например' for %% D in (C: D: E: F :) do @where/R %% D \ "filename.ext" '... – aschipfl