請問要如何可以大量且方便的更改檔案名稱
例如:
abc_06_(10000001).txt ==>10000001.txt
abc_08_(10000002).txt ==>10000002.txt
因工作需要常要更改,請個位大大相助,謝謝。
for /F %%a in ( 'dir abc*.txt /b' ) do ( for /F "delims=() tokens=2" %%b in ( "%%a" ) do ren "%%a" "%%b.txt" )
以下批次檔假設格式是固定的,如果檔名第八個字元非"("及第17個字元非")"則不會更名。
<pre class="c" name="code">
@ECHO OFF
SET Flag=0
SETLOCAL ENABLEDELAYEDEXPANSION
for /R C:\TEMP\ %%j in (*) do (
SET FileName=%%~nxj
IF "!FileName:~7,1!" EQU "(" (
IF "!FileName:~16,1!" EQU ")" (
REN %%~fj !FileName:~8,8!!FileName:~17,4! 2>null
IF !ERRORLEVEL! EQU 0 ECHO %%~nxj 變更為 !FileName:~8,8!!FileName:~17,4!
IF !ERRORLEVEL! EQU 1 (
ECHO %%~nxj 未變更請檢查是否已有!FileName:~8,8!!FileName:~17,4! 檔案.
ECHO 或是%%~fj已不存在.
PAUSE
ECHO.
)
)
)
IF "!FileName:~16,1!" NEQ ")" SET Flag=1
IF "!FileName:~7,1!" NEQ "(" SET Flag=1
IF !Flag! EQU 1 ECHO %%~nxj 的格式不符預期^^!
SET Flag=0
)
SETLOCAL DISABLEDELAYEDEXPANSION
用批次檔 .bat
然後建議用 UltraEditor 有 Block 編輯功能喔
快的話,建個批次檔,應該三分鐘可以搞定。
如果只是純手動的話可以用免費的軟體,如FastStone Image Viewer等等
UltraEdit 要錢,
Notepad++ 不用錢,
以下是我用 Notepad++ 的測試過程,
最後結果用如圖的設定操作:
就可做出 所要的 batch 檔的內容。
每組第一行是「尋找目標」
第二行是「取代成」
第三、四行是結果:
替換成 .txt 前面的全部
<pre class="c" name="code">(.*).txt
\1
abc_06_(10000001)
abc_08_(10000002)
以 _( 來區分,看第一部份是什麼:
由於 () 是 backreference 用的符號,
若要區別一般的括號符號,則要用 \( 、 \) 這是需要留意的地方。
<pre class="c" name="code">(.*)_\((.*)\).txt
\1
abc_06
abc_08
以 _( 區分,看第二部份是什麼:
<pre class="c" name="code">(.*)_\((.*)\).txt
\2
10000001
10000002
再加上 .txt
<pre class="c" name="code">(.*)_\((.*)\).txt
\2.txt
10000001.txt
10000002.txt
最外一層括號是 \1,並寫成 ren 的 batch 的格式:
<pre class="c" name="code">((.*)_\((.*)\).txt)
ren \1 \3.txt
ren abc_06_(10000001).txt 10000001.txt
ren abc_08_(10000002).txt 10000002.txt
其實我覺得就慢慢按F2 然後 CTRL +C&V 複製貼上在刪刪減減就好了...這是最笨最簡單的方法了吧...