2015-12-01 69 views
0

我是新來的批處理,只有一個非常基本的理解做什麼。基於部分文件名批量自動移動文件

我有數百個文件,我想根據名稱排序到文件夾中。文件名的一個例子是:

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

例如,有2個分配報告(PDF一個,在CSV)2009年至2014年,我想移動(或複製,也沒關係)所有分發報告放入一個文件夾,標記爲分發報告。

如果有人可以幫助,我會非常感激!

我工作過這個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 
+0

請說明你迄今爲止做了什麼。 –

+0

我正在處理這個帖子 - http://stackoverflow.com/questions/19992530/batch-create-folders-based-on-part-of-file-name-and-move-files-into-that-folder但是沒有太多的運氣......這就是我得到的,我認爲它沒有任何錯誤:@ECHO OFF SETLOCAL SET「sourcedir = C:\ Users \ emcaleer \ Desktop \ New folder」 PUSHD% sourcedir% FOR/f「標記= 1 *」%% a IN( 'dir/b/ad'*'* _ * _ * - * - * _'' )DO ( MD %%一個 MOVE「%%一個%% b」 \ %%一個\ 。) POPD GOTO:EOF – emcaleer

+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! 
) 
+0

這很好,謝謝! – emcaleer

相關問題