我有一个带有一堆.avi和.wav文件的文件夹。他们的名字如下:
{NameX}_{DateX}
我需要一个创建名为{Name1}
,{Name2}
等文件夹的表达式,然后将相应的文件复制到这些文件夹中。
提前致谢!
编辑:对不起,这是我到目前为止所尝试的内容。
@ECHO OFF
SETLOCAL
SET "sourcedir=c:\sourcedir"
PUSHD %sourcedir%
FOR /f "tokens=1*" %%a IN (
'dir /b /a-d "*_*_*_*_*_*_*_*.avi"'
) DO (
MD %%a
MOVE "%%a %%b" .\%%a\
)
POPD
GOTO :EOF
虽然没用,但我不知道为什么。
这是一个具体的文件名,我认为它可能有所帮助。
hl2_2014_12_26_04_05_12_268.avi
答案 0 :(得分:0)
你真的关闭。
您只是在FOR
语句中缺少分隔符(如果省略delims
参数,它将使用空格作为默认值)以使用下划线分隔名称。然后你需要重新组装"通过组合标记将文件名返回到MOVE
语句中。
@ECHO OFF
SETLOCAL
SET "sourcedir=c:\sourcedir"
PUSHD %sourcedir%
REM Use the underscore _ as a delimiter.
FOR /f "tokens=1,* delims=_" %%a IN ('dir /b /a-d "*_*_*_*_*_*_*_*.avi"') DO (
REM Name the folder based on what is before the first token.
MD %%a
REM To get the full filename, concatenate the tokens back together.
MOVE "%%a_%%b" .\%%a\
)
POPD
GOTO :EOF