Windows 为每个文件名创建文件夹并移动文件

Windows 为每个文件名创建文件夹并移动文件,windows,batch-file,Windows,Batch File,我有一个批处理文件,需要根据csv文件的前几个数字对csv文件进行排序。文件位于一个文件夹中,在检测到下划线前的前几个数字后,应为其指定并设置名称,例如 C:\FDM\FDMConversion\890\u AMMC1\u Recording\u 2012.csv C:\FDM\FDMConversion\898000\u AMMC1\u Recording\u 2012.csv 基本上,我希望脚本选择每个文件并创建一个文件夹。 例如,要移动890_AMMC1_Recording_2012.cs

我有一个批处理文件,需要根据csv文件的前几个数字对csv文件进行排序。文件位于一个文件夹中,在检测到下划线前的前几个数字后,应为其指定并设置名称,例如

  • C:\FDM\FDMConversion\890\u AMMC1\u Recording\u 2012.csv
  • C:\FDM\FDMConversion\898000\u AMMC1\u Recording\u 2012.csv
  • 基本上,我希望脚本选择每个文件并创建一个文件夹。 例如,要移动890_AMMC1_Recording_2012.csv,脚本将提取890并创建文件夹sample1,然后将文件移动到sample1中。 要移动898000_AMMC1_Recording_2012.csv,脚本将提取898000并创建文件夹sample2,然后将文件移动到sample2文件夹中

    代码如下:

        set filename="C:\FDM\FDMConversion\*.csv"
    
    for /f %%i in ('dir %filename% /b /a-d ') do (
        set "filename=%%~i"
        for /f "delims=_ tokens=1" %%a in ('echo !filename!') do (  
    
    rem rem    set folder=%%a 
    
     If "%%a"=="890" ( 
    set sample1=%%a
    mkdir "C:\FDM\FDMConversion\!sample1!"   2>nul
    for /f "delims=_ tokens=1" %%a in ('echo !filename!') do set ade=%%a
    
     pushd "C:\FDM\FDMConversion"
    for /r %%a in ("\!ade!*.csv" ) do (
       move /Y "%%a" "C:\FDM\FDMConversion\!ade!\%%~nxa"
    
       )
    popd
    )
    
    
    If "%%a"=="898000" ( 
    set sample2=%%a
    mkdir "C:\FDM\FDMConversion\!sample2!"   2>nul
    for /f "delims=_ tokens=1" %%a in ('echo !filename!') do set ade=%%a
     pushd "C:\FDM\FDMConversion"
    for /r %%a in ("\!ade!*.csv" ) do (
       move /Y "%%a" "C:\FDM\FDMConversion\!ade!\%%~nxa"
    
       )
    popD
    )
    
    )
    

    如果“%%a”==898000(
    将永远不会为真,因为运算符的一侧被引用,而另一侧没有引用。您所说的
    已排序是什么意思,因为没有进行排序?请提供预期开始条件和预期结束条件的清晰示例。现在已编辑。谢谢。我已修复它。关闭括号并删除do集…您认为呢是指“脚本将提取890”?您如何处理890?它已被修复。我的意思是脚本将选择下划线前的前几个字母。
    
        echo off 
    SETLOCAL ENABLEDELAYEDEXPANSION
    
    
    
    set filename="C:\FDM\FDMConversion\*.csv"
    
    for /f %%i in ('dir %filename% /b /a-d ') do (
        set "filename=%%~i"
        for /f "delims=_ tokens=1" %%a in ('echo !filename!') do (  
    
    rem rem    set folder=%%a 
    
     If "%%a"=="890" ( 
    
    mkdir "C:\FDM\FDMConversion\sample1"   2>nul
    for /f "delims=_ tokens=1" %%a in ('echo !filename!') do set ade=%%a
    
     pushd "C:\FDM\FDMConversion"
    for /r %%a in ("\!ade!*.csv" ) do (
       move /Y "%%a" "C:\FDM\FDMConversion\sample1\%%~nxa"
    
       )
    popd
    )
    
    
    If "%%a"=="898000" ( 
    
    mkdir "C:\FDM\FDMConversion\sample2"   2>nul
    for /f "delims=_ tokens=1" %%a in ('echo !filename!') do set ade=%%a
     pushd "C:\FDM\FDMConversion"
    for /r %%a in ("\!ade!*.csv" ) do (
       move /Y "%%a" "C:\FDM\FDMConversion\sample2\%%~nxa"
    
       )
    popD
    
    )
    
    
    )
    
    
    
    
       )