0

すべてのサブフォルダーを検索する dos スクリプト (.bat) を作成したいのですが、ファイル名に MK11 という単語が含まれるファイルが見つかるたびに、archive という名前のフォルダーを作成し、その中にファイルを移動する必要があります。

例:

c:\folder1\folder2\folderX\fileMK11.txt -> c:\folder1\folder2\folderX\archive\fileMK11.txt c:\folder1\folder3\fMK11ile.txt -> c:\folder1\folder3\archive\fMK11ile 。TXT

私が見た例から次のスクリプトを作成しようとしましたが、問題は、ファイルが見つかったディレクトリではなく、スクリプトがあるディレクトリに「アーカイブ」フォルダーを作成することです。

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

1 に答える 1

0

このスクリプトはあなたを道に連れて行くと思います。MOVEコマンドではなくCOPYコマンドをエコーし​​ましたが、難しい部分のいくつかは完了しています。

@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
于 2013-02-07T00:10:02.447 に答える