2013-08-20 298 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 
) 

如果這不是你的規格,請更清楚的是你的問題。

相關問題