2015-04-05 3 views
0

У меня есть сотни файлов csv. Файлы csv хранятся в папках и подпапках. Я хочу найти пятьдесят файлов csv, имена файлов которых определены, например 1.csv, 2.csv, 3.csv, ..., 50.csv. очень хлопотно, если я искал один за другим с помощью инструмента поиска Windows. Я хотел бы, если файлы будут найдены, сохраните их в папке FOUND. помогите преодолеть эту проблему, используя пакетное программирование/bat? Большое спасибоПакетная программа для поиска некоторого файла в подпапках

ответ

1

Существует ряд подходов, которые можно предпринять в зависимости от того, сколько автоматизации вам требуется ... Чтобы помочь вам начать работу, вы можете посмотреть на this, это помогло мне (и действительно продолжает это делать)), когда я начал изучать партию. Кроме того, я предоставил один возможный шаблон для достижения вашей цели, как я ее интерпретировал. Возможно, это не самый элегантный или эффективный метод, но он вводит несколько командных команд, которые вы могли или не могли встретить, что, в свою очередь, может помочь вам разработать собственный метод.

@echo off 
setlocal enabledelayedexpansion 

echo Please enter a drive letter: 
set /p "drive=>" 
echo Please enter a search string: 
set /p "searchstring=>" 
echo %searchstring%>search.txt 

set /p search=<search.txt 
set /a suffix=0 
echo.>>search.txt 

:LOOP 
for /f "tokens=*" %%i in ("search.txt") do (
set /a suffix=suffix+1 
set seq=%search% !suffix! 
echo !seq!>>search.txt 
) 
if !suffix! leq 49 goto LOOP 

for /f "tokens=*" %%i in (search.txt) do (
    for /f "tokens=*" %%j in ('dir /b /s /a-d %drive%:\"%%i.csv" 2^>nul') do (
    if not exist "%~dp0\found" md "%~dp0\found" 
    move /y "%%j" "%~dp0\found\%%~nxj" 
    ) 
) 
pause 

Это не предложение окончательного решения, хотя оно может найти ответ на ваш первоначальный запрос/запрос. Всего наилучшего.

1

Вот еще один рабочий раствор для вас ..

@ECHO OFF 
SETLOCAL EnableDelayedExpansion 

REM First Set your directories input and output 
SET InputDir=C:\Directory to your CSV files\ 
SET OutputDir=C:\Directory to your CSV files\FOUND 

REM check if the FOUND directory exist, if not, then create it. 
IF NOT EXIST OutputDir (
mkdir %OutputDir% 
) 

REM Grab a scan of the input directory and save it to a temporary file list. 
Dir /a /b %InputDir%>"%OutputDir%\Found.txt" 

REM Set the files you would like to find. 
SET "File1=1.csv" 
SET "File2=2.csv" 
SET "File3=50.csv" 

REM The loop, to process the matching file(s). 
FOR %%A IN (%File1%,%File2%,%File3%) DO (
    FOR /F "usebackq" %%B IN ("%OutputDir%\Found.txt") DO (
    IF %%A==%%B (
    copy "%InputDir%\%%A" "%OutputDir%\%%A" 
    ) 
) 
) 

REM Clean up the temp file list. 
DEL "%OutputDir%\Found.txt" 

Запомните, я не добавлял котировки на входных и выходных переменных, но вместо этого добавлены кавычки для копирования части кода, чтобы компенсировать белый пробелов в пути к вашему каталогу. Я старался держать его простым, чтобы вы могли следовать логике того, как он обрабатывал то, что вы ищете, теперь вы можете изменить это по своему вкусу. Удачи. Ура!

Смежные вопросы