我想遍歷一個文件夾及其所有子文件夾,保留當前文件的計數器變量並將其重命名爲$ counter $ ExistingFileName。
例如批量遍歷子文件夾和重命名文件
$count = 1;
foreach $file in $folder
{
$file.name = $count + $file.name;
$count++;
}
能回答這個問題的人將是我的英雄! :)
順便說一句,我使用的是Windows 7
我想遍歷一個文件夾及其所有子文件夾,保留當前文件的計數器變量並將其重命名爲$ counter $ ExistingFileName。
例如批量遍歷子文件夾和重命名文件
$count = 1;
foreach $file in $folder
{
$file.name = $count + $file.name;
$count++;
}
能回答這個問題的人將是我的英雄! :)
順便說一句,我使用的是Windows 7
好,而你正在琢磨我在我的評論的問題到您的文章(或者可能還在做自己的方式回到這個網站來閱讀)這裏是我的試驗照射:
@ECHO OFF
SET "rootdir=%~1"
IF "%rootdir%"=="" SET rootdir=.
SET cnt=0
FOR /R "%rootdir%" %%f IN (*) DO (
SET /A cnt+=1
SETLOCAL EnableDelayedExpansion
RENAME "%%f" "!cnt!%%~nxf"
ENDLOCAL
)
這將通過簡單地在前面加上自己的名字與編號,像這樣重命名文件:
1file.txt
2program.exe
...
如果你願意,你可以有它是這樣的:
00001file.txt
00002program.exe
對於您需要進行兩處更改上面的腳本(以粗體突出):
@ECHO OFF
SET "rootdir=%~1"
IF "%rootdir%"=="" SET rootdir=.
SET cnt=10000
FOR /R "%rootdir%" %%f IN (*) DO (
SET /A cnt+=1
SETLOCAL EnableDelayedExpansion
RENAME "%%f" "!cnt:~1!%%~nxf"
ENDLOCAL
)
回答!但是當我將這段代碼粘貼到控制檯中時,我在FOR後面得到一個語法錯誤,說「%% f」無法處理 – 2011-04-30 10:26:09
我不知道你明白了你的意思,這應該是一個腳本,保存在擴展名爲.bat或.cmd的文本文件中,然後運行腳本。順便說一下,我忘了補充一點,它也接受一個參數,它將成爲從哪裏開始遍歷的根文件夾。 – 2011-04-30 10:31:17
好的,我把它粘貼到rename.bat。然後從控制檯,我打電話rename.bat c:\ test,我也嘗試rename.bat「c:\ test」,但得到一個語法錯誤:( – 2011-04-30 10:44:28
SETLOCAL ENABLEDELAYEDEXPANSION
set count=1
for /r .\folder %%f IN (*.*) do (
ren "%%f" "!count!%%~nf%%~xf"
set /a count=!count!+1)
我試圖將它粘貼到控制檯中,但出現語法錯誤! :( – 2011-04-30 10:38:07
把它放到一個批處理文件中,然後運行批處理文件,將。\文件夾重命名爲你想要處理的HD上的文件夾 – 2011-04-30 10:54:58
所以如果文件夾是c:\ test \ 1,腳本怎麼樣應該看起來像?我正在搞一些選項,但總是得到語法錯誤 – 2011-04-30 11:17:21
那麼容易嗎?我*可以*回答這個問題。 :)但嚴重的是,新的名稱模板到底是什麼?它是否像'file.ext' ==>'1file.ext'?或者它應該是'1 $ file.ext'?或者可能是'00001file.ext'? – 2011-04-30 09:51:19