批量创建的文件夹按文件名部分和移动(Batch Created Folder By Filename

2019-10-21 09:51发布

我发现脱线的帖子,并已玩了。 我似乎无法得到DIR部分解析出文件名创建文件夹和文件移动到相应文件夹中。 以下是我的工作文件的例子:

...
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

我仍然玩弄它,但任何帮助,将不胜感激!

Answer 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 -在这种情况下. 但在原来的空间



文章来源: Batch Created Folder By Filename Part and Move