如何将所有图像文件随机排列在一个文件夹中?

时间:2018-09-22 14:50:44

标签: image batch-file windows-10 directory

我正在使用Windows,我想将图像文件随机排列在特定的文件夹中,而不是以特定的方式对它们进行排序,有没有一种方法可以随机地排列它们?

1 个答案:

答案 0 :(得分:0)

Windows资源管理器(explorer.exe)将对文件进行排序,但是您告诉它对文件进行排序。 您可以按名称,日期,类型,大小等对文件进行排序。 对它们进行随机排序还需要对这些过滤器之一进行随机化。

现在,根据您需要的随机文件,可以更改问题的所需答案。例如,如果您需要一种随机分配屏幕保护程序或幻灯片的方法,那么这不是表达问题的正确方法。

但是,如果您需要的只是某种方式来随机化文件夹的内容,下面是HowToGeek不久前发布的一些代码:

@ECHO OFF

REM Randomly renames every file in a directory.

SETLOCAL EnableExtensions EnableDelayedExpansion

REM 0 = Rename the file randomly.
REM 1 = Prepend the existing file name with randomly generated string.
SET PrependOnly=0

REM 1 = Undo changes according to the translation file.
REM This will only work if the file "__Translation.txt" is in the same folder.
REM If you delete the translaction file, you will not be able to undo the changes!
SET Undo=0


REM --------------------------------------------------------------------------
REM Do not modify anything below this line unless you know what you are doing.
REM --------------------------------------------------------------------------

SET TranslationFile=__Translation.txt

IF NOT {%Undo%}=={1} (
    REM Rename files
    ECHO You are about to randomly rename every file in the following folder:
    ECHO %~dp0
    ECHO.
    ECHO A file named %TranslationFile% will be created which allows you to undo this.
    ECHO Warning: If %TranslationFile% is lost/deleted, this action cannot be undone.
    ECHO Type "OK" to continue.
    SET /P Confirm=
    IF /I NOT {!Confirm!}=={OK} (
        ECHO.
        ECHO Aborting.
        GOTO :EOF
    )

    ECHO Original Name/Random Name > %TranslationFile%
    ECHO ------------------------- >> %TranslationFile%

    FOR /F "tokens=*" %%A IN ('DIR /A:-D /B') DO (
        IF NOT %%A==%~nx0 (
            IF NOT %%A==%TranslationFile% (
                SET Use=%%~xA
                IF {%PrependOnly%}=={1} SET Use=_%%A

                SET NewName=!RANDOM!-!RANDOM!-!RANDOM!!Use!
                ECHO %%A/!NewName!>> %TranslationFile%

                RENAME "%%A" "!NewName!"
            )
        )
    )
) ELSE (
    ECHO Undo mode.
    IF NOT EXIST %TranslationFile% (
        ECHO Missing translation file: %TranslationFile%
        PAUSE
        GOTO :EOF
    )
    FOR /F "skip=2 tokens=1,2 delims=/" %%A IN (%TranslationFile%) DO RENAME "%%B" "%%A"
    DEL /F /Q %TranslationFile%
)