我有一个520 jpg文件的图像序列命名为:
001.jpg002.jpg...520.jpg
001.jpg
002.jpg
.
520.jpg
字符串我想用一个windows批处理脚本来打乱图像(保持相同的序列文件名)。这可能吗?
0wi1tuuw1#
我发现这是shuffle:
@ECHO OFFREM Randomly renames every file in a directory.SETLOCAL EnableExtensions EnableDelayedExpansionREM 0 = Rename the file randomly.REM 1 = Prepend the existing file name with randomly generated string.SET PrependOnly=0REM 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=0REM --------------------------------------------------------------------------REM Do not modify anything below this line unless you know what you are doing.REM --------------------------------------------------------------------------SET TranslationFile=__Translation.txtIF 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%)
@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.
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 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
FOR /F "skip=2 tokens=1,2 delims=/" %%A IN (%TranslationFile%) DO RENAME "%%B" "%%A"
DEL /F /Q %TranslationFile%
字符串这就是序列
@echo offsetlocal ENABLEDELAYEDEXPANSIONset /a a=0for /f "delims=" %%I in ('dir /b *.jpg') do ( set "idx=00!a!" ren "%%~I" "!idx:~-3!%%~xI" set /a a += 1)
@echo off
setlocal ENABLEDELAYEDEXPANSION
set /a a=0
for /f "delims=" %%I in ('dir /b *.jpg') do (
set "idx=00!a!"
ren "%%~I" "!idx:~-3!%%~xI"
set /a a += 1
型希望这会有所帮助:)
q8l4jmvw2#
这不是这个网站的工作方式。你应该提供一个代码,你有问题,我们帮你解决问题.不过,我现在有空闲时间,所以我写了这个给你:
@echo offsetlocal EnableDelayedExpansionrem Load file names in both "in" and "out" arraysset "i=0"for %%f in (*.jpg) do ( set /A i+=1 set "in[!i!]=%%~Nf" set "out[!i!]=%%~Nf")rem Shuffle "in" array and rename the files in opposite "out" orderfor /L %%i in (%i%,-1,1) do ( set /A "pos=!random! %% %%i + 1" for %%p in (!pos!) do ( ren "!in[%%p]!.jpg" "!out[%%i]!.new" set "in[%%p]=!in[%%i]!" ))ren *.new *.jpg
setlocal EnableDelayedExpansion
rem Load file names in both "in" and "out" arrays
set "i=0"
for %%f in (*.jpg) do (
set /A i+=1
set "in[!i!]=%%~Nf"
set "out[!i!]=%%~Nf"
rem Shuffle "in" array and rename the files in opposite "out" order
for /L %%i in (%i%,-1,1) do (
set /A "pos=!random! %% %%i + 1"
for %%p in (!pos!) do (
ren "!in[%%p]!.jpg" "!out[%%i]!.new"
set "in[%%p]=!in[%%i]!"
ren *.new *.jpg
字符串
2条答案
按热度按时间0wi1tuuw1#
我发现这是shuffle:
字符串
这就是序列
型
希望这会有所帮助:)
q8l4jmvw2#
这不是这个网站的工作方式。你应该提供一个代码,你有问题,我们帮你解决问题.
不过,我现在有空闲时间,所以我写了这个给你:
字符串