Всех приветствую и поздравляю с прошедшими праздниками !!!
Появилась задача собрать ( move) или скопировать ( copy) файлы в одну папку из папки ( или папок) содержащую подпапки по маске *а*.* ,где а - один-три символа в названии ( текст или числа) и любое расширение.
Вот получилось,но не работает
for /f "tokens=*" %%a in ('Dir *<search>*') Do move "%%a" C:\Temp
@echo off
SetLocal EnableExtensions
set source=c:\temp\subf
set dest=c:\temp\dest
if not exist "%dest%" md "%dest%"
for /f "delims=" %%a in ('dir /b /ad "%source%\???.*"') do copy /y "%source%\%%~a" "%dest%\"
pause
Рекурсивно:
CMD/BATCH:
@echo off
SetLocal EnableExtensions
set source=c:\temp\subf
set dest=c:\temp\dest
if not exist "%dest%" md "%dest%"
for /f "delims=" %%a in ('dir /b /ad /s "%source%\???.*"') do copy /y "%%~a" "%dest%\"
pause
@Dragokas, такой вопрос - ты применил команду delims это вроде разделитель , он разделяет название файла на символы ? А команда tokens это элементы ,т.е. набор символов от пробеле до пробела ? В этих командах я плаваю (як кур во щах )
Это уже смотря какие разделители выше ты задашь (по умолчанию, это пробел и знак табуляции).
В tokens ты перечисляешь номера (по умолчанию, tokens=1). Номера обозначают порядковый номер кусочка (те кусочки, что получились после дробления текста разделителями). Tokens говорит, говорит какой кусочек в какой токен %% попадёт. Начальный токен в примере выше %%a.
Т.е. если например, задашь в for - tokens=1,3 и %%c, то в %%c попадёт кусочек №1, а в %%d попадёт кусочек №3. Но это если delims не пустой (т.е. опущен, или задан свой), иначе дробления не будет.
Другой пример:
Код:
for /f "tokens=2*" %%a in ("AA BB CC DD") do echo %%a
в %%a попадёт 2-й токен (значение = BB),
в %%b попадёт 3 + все остальные токены (значение = CC DD)
Регистр символа токена имеет значение.
Ещё есть eol= (по умолчанию, точка с запятой). Символ начала строки, которая будет опущена при чтении.