2014-12-08 5 views
1

Я нашел сообщение magoo и играл с ним. Кажется, я не могу заставить часть DIR проанализировать имя файла, чтобы создать папку и переместить файлы в соответствующие папки. Ниже приведены примеры файлов Я работаю с:Batch Created Folder By Filename Part and Move

... 
800.1.gif 
800.2.gif 
800.3.jpg 
801.1.gif 
801.2.jpg 
801.3.gif 
... 

Партия должна создавать папки 800 и 801 и переместить 800.X и 801.x файлы соответственно. Я пробовал FINDSTR и другие маски и не имел большой удачи.

Вот оригинальный пакетный код МагУ в (источник: http://bit.ly/1ua8IIF):

@ECHO OFF 
SETLOCAL 
SET "sourcedir=c:\sourcedir" 
PUSHD %sourcedir% 
FOR /f "tokens=1*" %%a IN (
'dir /b /a-d "*_*_*-*-* *.*"' 
) DO ( 
ECHO MD %%a 
ECHO MOVE "%%a %%b" .\%%a\ 
) 
POPD 
GOTO :EOF 

Моя попытка через несколько часов:

@ECHO OFF 
SETLOCAL 
SET "sourcedir=c:\sourcedir" 
PUSHD %sourcedir% 
FOR /f "tokens=1*" %%a IN (
'dir /b /a-d ^|findstr /r "\.[1-9]"' 
) DO ( 
ECHO MD %%a 
ECHO MOVE "%%a %%b" .\%%a\ 
) 
POPD 
GOTO :EOF 

Я до сих пор играю с ним, но любая помощь будет очень оценил это!

ответ

1

Модификации вы должны сделать это:

FOR /f "tokens=1*delims=." %%a IN (

Добавление delims=. означает «лечить . в качестве разделителя.» В оригинале использовался разделитель по умолчанию Пробел.

'dir /b /a-d "*.*.gif" "*.*.jpg"' 

Выполните список каталогов на файлы, соответствующие *.*.gif или *.*.jpg

Кавычки не нужны, но безвредным. В оригинале для маски файла необходимо, чтобы пространство было включено в строку маски; пространство является разделителем и цитирование строки удаляет особое значение.

Это будет соответствовать любому файлу, соответствующему либо расширению. Если вы хотите, чтобы соответствовать любому файлу шаблон *.*.*, то не стесняйтесь, чтобы изменить это

'dir /b /a-d *.*.*' 

наконец,

ECHO MOVE "%%a.%%b" .\%%a\ 

Это просто вопрос восстановления исходной строки, повторно вставить . разобранные for - в данном случае ., но в оригинале Пробел

+0

Большое вам спасибо. Я только что узнал о делимах. Это спасло бы мне больше времени вместо того, чтобы возиться с регулярным выражением FINDSTR - тьфу! Еще раз спасибо, Magoo! – Malibu