我想从某个文件的前缀创建文件夹,然后将文件名中包含特定字符串的多个文件复制到该文件夹。例如:
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 :(得分:1)
假设文件名的第一部分(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!"
)
答案 1 :(得分: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"
)
)
答案 2 :(得分:0)
如果您使用的唯一目录是DM0008
和DM0008MI
且文件模式为DM0008d3VI_*.IMI
和DM0008d6MI_*.IMI
,那么:
@ECHO OFF
IF EXIST DM0008d3VI_*.IMI (
MD DM0008
MOVE DM0008d3VI_*.IMI DM0008
)
IF EXIST DM0008d6MI_*.IMI (
MD DM0008MI
MOVE DM0008d6MI_*.IMI DM0008MI
)
如果这不是您的规格,请将您的问题更清楚。