首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用通配符批量移动文件夹

如何使用通配符批量移动文件夹
EN

Stack Overflow用户
提问于 2013-06-27 08:12:28
回答 1查看 743关注 0票数 0

我有一堆文件夹命名为dates Ex 20132706201323062013220520133004

我想将这些文件夹移到相应的文件夹中,我可以只写1000行代码,但我想添加通配符。

这就是我目前正在做的事情:

代码语言:javascript
复制
Move \\folder1\20132706  \\folder1\june2013
Move \\folder1\20132306  \\folder1\june2013
Move \\folder1\20132205  \\folder1\May2013
Move \\folder1\20133004  \\folder1\April2013

这就是我想要做的:

代码语言:javascript
复制
Move \\folder1\??????06 \\folder1\june2013
Move \\folder1\??????05 \\folder1\may2013
Move \\folder1\??????04 \\folder1\april2013

然而,我在使用通配符方面并不成功。

我做错了什么?

EN

回答 1

Stack Overflow用户

发布于 2013-06-27 10:32:09

代码语言:javascript
复制
@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长,转换并重新格式化目标名称,然后完成!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17332526

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档