2013-08-20 252 views
0

我想从某个文件的前缀创建文件夹,然后将具有特定字符串的多个文件复制到该文件夹​​的文件名中。例如:创建Windows批处理文件以创建文件夹/文件

VI文件名为DM0008与以下文件夹

DM0008d3VI_001.IMI 
DM0008d3VI_002.IMI 

MI文件名为DM0008MI与以下文件

DM0008d6MI_002.IMI 
DM0008d6MI_003.IMI 

我也尝试文件夹这但是这为每个单独的文件创建了一个文件夹:

@echo off 
for %%a in (*VI*) do (
    md "%%~na" 2>nul 
    move "%%~na.*" "%%~na" 
) 
for %%a in (*MI*) do (
    md "%%~na" 2>nul 
    move "%%~na.*" "%%~na" 
) 

回答

0

假设文件名(DM####)的第一部分将永远是6个字符,你可以这样做:

@echo off 

setlocal EnableDelayedExpansion 

for %%a in (*VI*) do (
    set "folder=%%~na" 
    set "folder=!folder:~0,6!" 
    if not exist "!folder!" md "!folder!" 
    move "%%~nxa" "!folder!" 
) 
for %%a in (*MI*) do (
    set "folder=%%~na" 
    set "folder=!folder:~0,6!MI" 
    if not exist "!folder!" md "!folder!" 
    move "%%~nxa" "!folder!" 
) 
0
@ECHO OFF &SETLOCAL 
FOR /f "delims=" %%a IN (file) DO (
    FOR /f "delims=" %%b IN ('echo("%%~na"^|sed -r "/VI/s/(..[0-9]+).*/\1/;/MI/s/(..[0-9]+).*/\1MI/"') DO (
     ECHO MD "%%~b" 2>NUL 
     ECHO MOVE "%%~fa" "%%~b" 
    ) 
) 

sed for Windows

0

如果你唯一的目录使用的DM0008DM0008MI而且您的文件格式为DM0008d3VI_*.IMIDM0008d6MI_*.IMI则:

@ECHO OFF 
IF EXIST DM0008d3VI_*.IMI (
    MD DM0008 
    MOVE DM0008d3VI_*.IMI DM0008 
) 
IF EXIST DM0008d6MI_*.IMI (
    MD DM0008MI 
    MOVE DM0008d6MI_*.IMI DM0008MI 
) 

如果这不是你的规格,请更清楚的是你的问题。

相关问题