我有一堆文件夹命名为dates Ex 20132706,20132306,20132205,20133004。
我想将这些文件夹移到相应的文件夹中,我可以只写1000行代码,但我想添加通配符。
这就是我目前正在做的事情:
Move \\folder1\20132706 \\folder1\june2013
Move \\folder1\20132306 \\folder1\june2013
Move \\folder1\20132205 \\folder1\May2013
Move \\folder1\20133004 \\folder1\April2013这就是我想要做的:
Move \\folder1\??????06 \\folder1\june2013
Move \\folder1\??????05 \\folder1\may2013
Move \\folder1\??????04 \\folder1\april2013然而,我在使用通配符方面并不成功。
我做错了什么?
发布于 2013-06-27 10:32:09
@ECHO OFF
SETLOCAL
SET localroot=u:\folder
FOR /f %%i IN (
'dir /ad /b "%localroot%" ^|findstr /r "^[0-9]*$"'
) DO CALL :movedir %%i
GOTO :EOF
:movedir
:: ensure destination is exactly 8 chars long
SET "dest=%1"
SET dest=%dest:~7%
IF NOT DEFINED dest GOTO :EOF
SET dest=%dest:~1%
IF DEFINED dest GOTO :EOF
SET "dest=%1"
:: convert month to text
SET "month="
SET "dest="&FOR %%i IN (01 january 02 february 03 march etc etc 12 december) DO IF NOT DEFINED dest (
IF DEFINED month SET dest=%%i%dest:~0,4%
IF %dest:~-2%==%%i SET month=Y
)
ECHO MOVE %localroot%\%1 %localroot%\%dest%
GOTO :eof这应该会完成所需的工作-您所需要做的就是更改localroot定义,以指定的格式填写月份列表,并在选中remove the ECHO之后激活MOVE。
循环遍历目录,只过滤掉那些纯数字的目录(开始和结束之间的任意数量的数字)
检查名称是否恰好为8长,转换并重新格式化目标名称,然后完成!
https://stackoverflow.com/questions/17332526
复制相似问题