dos脚本查找一些文件,在同一目录中创建一个文件夹并将其移入

时间:2013-02-06 15:37:29

标签: dos

我想创建一个dos脚本(.bat)来搜索所有子文件夹,每当它在文件名中找到一个带有单词MK11的文件时,它必须创建一个名为archive的文件夹并将文件移入其中。

示例:

c:\ folder1 \ folder2 \ folderX \ fileMK11.txt - > C:\文件夹1 \文件夹2 \ folderX \存档\ fileMK11.txt c:\ folder1 \ folder3 \ fMK11ile.txt - > C:\ folder1中\ folder3 \存档\ fMK11ile.txt

我尝试从我见过的示例中创建以下脚本,但问题是它在脚本所在的目录中创建了文件夹“archive”,而不是找到该文件的目录。

    setlocal ENABLEDELAYEDEXPANSION
    set /a c=0
    FOR /R %%i in (*MK11*) do (
    set /a c=c+1
    md archive
    move "%%i" archive
    )
    endlocal

1 个答案:

答案 0 :(得分:0)

我认为这个脚本会让你顺利进行。我回复了一个COPY命令而不是MOVE命令,但是有些困难的部分已经完成了。

@echo off
SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION

SET TEMPFILE=%TEMP%\afinder_%RANDOM%_%RANDOM.tmp
DIR /S /B /A-D *MK11* >%TEMPFILE%
FOR /F "usebackq delims=" %%f IN (`type %TEMPFILE%`) DO (
    ECHO "%%f"
    FOR /F "delims=\ tokens=*" %%a IN ("%%f") DO (
        SET PNAME="%%~pa"
        ECHO PNAME is set to !PNAME!
    ECHO "!PNAME:~-9,7!"
        REM Check to see if this file is already in an Archive directory.
        IF "!PNAME:~-9,7!" == "Archive" (
            echo got one
        ) else (
            echo not one
            IF NOT EXIST "!PNAME!\Archive" (MKDIR "!PNAME!\Archive")
            echo COPY %%f "!PNAME!\Archive"
        )
    )
)
IF EXIST "%TEMPFILE%" (DEL "%TEMPFILE%")
EXIT /B 0