PDA

Показать полную графическую версию : [решено] Поиск файлов и перемещение каталога


djvall
03-02-2011, 14:24
Подскажите!

Имеется проблемка: необходимо в некотором каталоге есть подкаталоги, которые содержат некие файлы, в одном подкаталоге могут содержаться файлы и txt и dbf и т.д.
так вот необходимо найти подкаталоги, кот. содержат хотя бы один файл txt, и переместить эти подкаталоги (вместе с содержимым) в некую папку KONTYNER.

набросал вот такую вещь, но она не работает

@echo on
cls
set mask="*.txt*"
rem Получение путей каталогов по маске
dir /b/s/o/n/a:-d "%~dp0Base\%mask%">ret.txt
rem Перемещение катологов
for /F "tokens=*" "%%i" in (%~dp0\ret.txt) do (
move "%~fi\*.*" "%~dp0KONTYNER\")
rem Удаление временного файла
del /q "%~dp0\ret.txt"
pause

SendMessage
03-02-2011, 18:10
Попробуй так:
@echo of
setlocal enabledelayedexpansion

set "MainDir=%~dp0Base"
set "OutDir=%~dp0KONTYNER"

for /f "tokens=*" %%a in ('dir /a-d/s/b "%MainDir%\*.txt"') do (
set "TxtDirPath=%%~dpa"
set "OutSubDir=%OutDir%\!TxtDirPath:%MainDir%\=!"
if not exist "!OutSubDir!" (
md "!OutSubDir!" && move "!TxtDirPath!*.*" "!OutSubDir!" && rd "!TxtDirPath!"
)
)

djvall
04-02-2011, 09:00
пояснить можете эту строчку:
set "OutSubDir=%OutDir%\!TxtDirPath:%MainDir%\=!" »
как это работает и можете подробнее про вот такие логические выражения:
=%OutDir%\!TxtDirPath:%MainDir%\=!"

и еще, не могу нигде найти почему выделяется !...!
md "!OutSubDir!" »

Спасибо!

djvall
04-02-2011, 09:32
@echo of
setlocal enabledelayedexpansion
set "MainDir=%~dp0Base"
set "OutDir=%~dp0KONTYNER"
for /f "tokens=*" %%a in ('dir /a-d/s/b "%MainDir%\*.txt"') do (
set "TxtDirPath=%%~dpa"
set "OutSubDir=%OutDir%\!TxtDirPath:%MainDir%\=!"
if not exist "!OutSubDir!" (
md "!OutSubDir!" && move "!TxtDirPath!*.*" "!OutSubDir!" && rd "!TxtDirPath!"
)
) »

Работает просто ИДЕАЛЬНО. Еще раз спасибо SendMessage !!!




© OSzone.net 2001-2012