批量:根据部分文件名创建一个文件夹,然后将文件复制到其中
Batch: create a folder based on part of filename and then copy the file into it
我有一个包含一堆 .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
你真的接近。
您只是在 FOR
语句中缺少一个分隔符(如果您省略 delims
参数,它将使用 space 作为默认值)将名称分开下划线。然后,您需要通过组合标记 "reassemble" 将文件名返回到 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
我有一个包含一堆 .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
你真的接近。
您只是在 FOR
语句中缺少一个分隔符(如果您省略 delims
参数,它将使用 space 作为默认值)将名称分开下划线。然后,您需要通过组合标记 "reassemble" 将文件名返回到 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