我有 80 個檔案夾,每個檔案夾內有 1 到 30 張影像。
我正在尋找一種將每個影像重命名為隨機 20 位數字的方法。 這是一個例子:
Folder_1
|
--- J0tNNchs7U.png -> 59106128950679048106.png
--- nB9HodYxov.png -> 95787130775876521419.png
--- 4yZswgC7xh.png -> 86675183902449304154.png
--- Ax9xwx1e4L.png -> 00276988431900233660.png
Folder_2
|
--- a1yoCwGeUE.png -> 82032328129568492832.png
--- xwItDSLNg4.png -> 98505854158768600999.png
--- 5beJ52yhD1.png -> 90915835999997422646.png
Folder_3
|
--- oSWqLBsymz.png -> 42132595053848488418.png
--- AgoS8guAxi.png -> 76836254163466666967.png
Folder_4
|
--- 5xLO5IXwRd.png -> 39762534969789244484.png
Etc...
如果我想手動完成,可能需要 2 到 4 個小時,是否可以在 Windows 10 中使用cmd?
謝謝你。
uj5u.com熱心網友回復:
這是很有可能的。下面是一種生成 20 位亂數的方法:
@echo off
setlocal enabledelayedexpansion
for /l %%i in (1,1,20) do (
set /a rnd=!random! %% 10
set res=!res!!rnd!
)
echo !res!
然后可以將其與檔案重命名合并:
@echo off
pushd "C:\path to png files"
setlocal enabledelayedexpansion
for /R %%i in (*.png) do (
set "name=%%~ni"
if "!name:~19,1!" == "" call :digits "%%i"
)
goto :EOF
:digits
echo "%~n1" | findstr /VRC:"[a-Z]" && goto :EOF
set res= & set rnd=
for /l %%i in (1,1,20) do (
set /a rnd=!random! %% 10
set "res=!res!!rnd!"
set "res=!res: =!
)
if exist "%~dp1!res!%~x1" call :digits "%~1"
echo ren "%~1" "!res!%~x1"
popd
goto :EOF
請注意,echo最后一行的 QA 目的,只有echo在列印結果看起來正確時才洗掉。在生產中運行它之前,請始終先在測驗檔案夾中對其進行測驗。
說明:我運行一個 for 回圈來獲取每個png檔案,然后用檔案名呼叫:digits標簽。標簽中的for回圈:digits僅在每個回圈中生成一個最大位數為 1 的亂數,因此%% 9. 然后它將set res=!res!!rnd!在行中將每個數字附加到另一個數字旁邊,直到所有 20 個數字都被附加成為一個變數,然后只需將檔案重命名為創建的變數。
您可以進行一些檢查以確保您沒有具有亂數的現有檔案,也可以僅重命名還不是 20 位數字的檔案,但問題更多是關于如何創建隨機 20 位數字數字。
有關所使用命令的更多幫助,請打開cmd并運行:
for /?
set /?
setlocal /?
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/531201.html
標籤:视窗批处理文件命令
上一篇:將資料從一個表拆分到另一個表
