基于部分文件名

时间:2015-12-01 18:28:55

标签: batch-file

我是批处理新手,只对基本知识有了基本的了解。

我有数百个文件要根据名称排序到文件夹中。文件名的一个例子是:

346479_2009-01-01_2009-12-31_Distribution_Report

例如,2009年到2014年有2个分发报告(一个pdf,在csv上),我想将所有分发报告移动(或复制,并不重要)到一个文件夹,标记为分发报告。

如果有人可以提供帮助,我会非常感激!

我正在处理这个post,但没有太多运气......这就是我所得到的,我不认为这一切都是正确的:

    @ECHO OFF
    SETLOCAL
    SET "sourcedir=C:\Users\emcaleer\Desktop\New folder"
    PUSHD %sourcedir%
    FOR /f "tokens=1*" %%a IN (
     'dir /b /a-d "*_*_*-*-*-*_*-*-*-*_"'
     ) DO (  
     MD %%a
     MOVE "%%a %%b" .\%%a\
    )
    POPD
    GOTO :EOF

1 个答案:

答案 0 :(得分:0)

for语法对于初学者来说可能有点混乱。您指定了标记,但没有分隔符。由于字符串中没有默认分隔符,因此第二个标记永远不会获得任何值。试试这个:

@echo off
setlocal enabledelayedexpansion

for /f "delims=" %%i in ('dir /b /a-d *_*_*_*.*') do (
  set file=%%~ni
  set folder=!file:*-31_=!
  md !folder! 2>nul
  move "%%i" !folder!
)