我想要製作一個腳本來執行以下操作,但是我沒有Windows編碼體驗。Windows:重命名cmd內的文件
我努力實現以下目標:
我有在它的多個圖像的文件夾,我想它像這樣
2012.000.value
是價值序列命名爲我願意就像它能夠在腳本運行之前輸入一個值,並且第一個圖像將是該數字,然後它將計數重命名具有該值的圖像文件夾。
某些圖像可能有一個名爲Original
的文件名,我想保留該值,但也要將上面的序列插入到文件名中。
圖像將是.jpg
我想要製作一個腳本來執行以下操作,但是我沒有Windows編碼體驗。Windows:重命名cmd內的文件
我努力實現以下目標:
我有在它的多個圖像的文件夾,我想它像這樣
2012.000.value
是價值序列命名爲我願意就像它能夠在腳本運行之前輸入一個值,並且第一個圖像將是該數字,然後它將計數重命名具有該值的圖像文件夾。
某些圖像可能有一個名爲Original
的文件名,我想保留該值,但也要將上面的序列插入到文件名中。
圖像將是.jpg
@echo off
setlocal enabledelayedexpansion
set count=0
for /d %%x in (%date:~-4%.000.???) do (
for /f "tokens=3 delims=." %%y in ("%%x") do (
set count=%%y
for %%z in (%%x\*.jpg) do (
ren %%~dpnxz !count!.jpg
set /a count=count+1
)
)
)
endlocal
上面代碼假定目錄將在%CurrentYear%.000.???
格式。如果你想多年,你需要不同的代碼。
編輯:該代碼不會輸出000.jpg
或001.jpg
,它將輸出0.jpg
或1.jpg
。底部的代碼將處理這個問題。
此外,它將完全刪除###.jpg
的原始文件名,並且可以使用任何值。如果你想保持原來一樣的文件名等等#-FileName.jpg
改變ren
行:
ren %%~dpnxz !count!-%%~nz.jpg
的代碼不會對文件進行排序,但將在他們所創建的順序處理它們。如果你想他們按字母順序排列。 ,然後改變for %%z in (%%x\*.jpg) do (
行:
for /f "tokens=*" %%z in ('dir /o:n %%x\*.jpg') do (
編輯:該代碼將輸出的數字相一致的長度,由用戶輸入的限制。
要使用此代碼,您需要傳遞您想要的最大數量的字符數。所以......
IMG 2
...可以從00.jpg
文件重命名爲99.jpg
和...
IMG 4
...可以將文件重新命名0000.jpg
到9999.jpg
。
IMG.BAT
@echo off
setlocal enabledelayedexpansion
:: Set how many characters the number can be. IE 00 = 2, 0000 = 4
set places=%1
set count=0
set zeros=
for /l %%x in (1,1,%places%) do set zeros=!zeros!0
for /d %%x in (%date:~-4%.000.???) do (
for /f "tokens=3 delims=." %%y in ("%%x") do (
set count=%%y
for %%z in (%%x\*.jpg) do (
:: Make give !count! leading 0's if nessicary
set count=%zeros%!count!
:: Trim !count! down to a 4 digit number
set count=!count:~-%places%!
ren %%~dpnxz !count!.jpg
:: Trim ALL 0's on the left to avoid calculation problems.
set /a n=places-1
for /l %%a in (0,1,!places!) do if "!count:~0,1!"=="0" set count=!count:~1!
set /a count=count+1
)
)
)
endlocal
我喜歡這種方法,因爲Windows資源管理器一般的字母順序排列的文件,所以這將是1.jpg
2.jpg
3.jpg
10.jpg
20.jpg
1.jpg
10.jpg
2.jpg
20.jpg
3.jpg
文件順序但是,如果這些數字固定在3個字符寬度和前導0,他們的字母順序是:
001.jpg
002.jpg
003.jpg
010.jpg
020.jpg
我可以讓它超過999嗎?如果找到這個值,我可以包含一個if語句==原始使用'ren %%〜dpnxz!count! - %%〜nz.jpg'否則使用原始的 –
@JessMcKenzie - 我的不好。它已經可以處理999以上的數字,而不是固定長度的數字。我已經添加了處理該問題的代碼。如果你可以選擇它作爲回答,並upvote它,我會很感激。 :) –