2012-12-23 207 views
6

我有一些文件,如AAA_a001.jpgBBB_a002.jpgCCC_a003.jpg在Windows 7 ,我嘗試使用批處理這些文件重命名爲a001_AAA.jpga002_BBB.jpga003_CCC.jpgWindows批處理文件重命名

只是爲了交換_之間的內容。

我一直在尋找一段時間,但仍然不知道如何做到這一點。 任何人都可以幫忙嗎? 謝謝。

回答

6
@echo off 
pushd "pathToYourFolder" || exit /b 
for /f "eol=: delims=" %%F in ('dir /b /a-d *_*.jpg') do (
    for /f "tokens=1* eol=_ delims=_" %%A in ("%%~nF") do ren "%%F" "%%~nB_%%A%%~xF" 
) 
popd 

注:這個名字是在_第一次出現分裂。如果一個文件被命名爲「part1_part2_part3.jpg」,那麼它將被重命名爲「part2_part3_part1.jpg」

+0

這正是我需要的。謝謝!! – yuchien

+0

仍然是一個小問題:它也交換「.jpg」。防爆。 part1_part2.jpg => part2.jpg_part1 Orz – yuchien

+0

@ raphael0914 - ???它適用於我:part1_part2.jpg - > part2_part1.jpg – dbenham

24

使用REN命令

Renrename

ren (where the file is located) (the new name) 

例如

ren C:\Users\&username%\Desktop\aaa.txt bbb.txt 

它將改變aaa.txt到bbb.txt

您的代碼將是:

ren (file located)AAA_a001.jpg a001.AAA.jpg 

ren (file located)BBB_a002.jpg a002.BBB.jpg 

ren (file located)CCC_a003.jpg a003.CCC.jpg 

IT WILL NOT WORK IF THERE IS SPACES! 

希望它能幫助:d

+2

'只是爲了'_''之間的內容交換你明白這個問題是什麼? – jadkik94

+0

我知道我應該使用ren重命名文件,但我的問題是我不知道如何做這些字符串操作Orz – yuchien

+0

不是真的:/請使用交換內容的**好解釋**? – Itsproinc

1

我假設您知道_之前和下劃線之後的部分的長度以及擴展名。如果你不這樣做,它可能比簡單的子字符串更復雜。

cd C:\path\to\the\files 
for /f %%a IN ('dir /b *.jpg') do (
set p=%a:~0,3% 
set q=%a:~4,4% 
set b=%p_%q.jpg 
ren %a %b 
) 

我剛想到這個腳本,我沒有測試它。查看thisthat以瞭解更多信息。

如果你要認爲你不知道_的位置和長度和延伸,我想你可以做一些與環路檢查_的索引,那麼.的最後一個索引,把它包裝在一個goto的東西,並使其工作。如果你願意經歷這個麻煩,我建議你至少使用WindowsPowerShell(或者Cygwin)(爲了你自己)或者安裝更高級的腳本語言(想想Python/Perl),你會得到更多的支持辦法。

5

as itsproinc said,REN command working!

但如果你的文件路徑/文件名中有空格,用引號 「」

例如:

ren C:\Users\&username%\Desktop\my file.txt not my file.txt 

添加 「」

ren "C:\Users\&username%\Desktop\my file.txt" "not my file.txt" 

希望它有助於

0

我重新命名代碼

echo off 

setlocal EnableDelayedExpansion 

for %%a in (*.txt) do (
    REM echo %%a 
    set x=%%a 
    set mes=!x:~17,3! 

    if !mes!==JAN (
     set mes=01 
    ) 

    if !mes!==ENE (
     set mes=01 
    ) 

    if !mes!==FEB (
     set mes=02 
    ) 

    if !mes!==MAR (
     set mes=03 
    ) 

    if !mes!==APR (
     set mes=04 
    ) 

    if !mes!==MAY (
     set mes=05 
    ) 

    if !mes!==JUN (
     set mes=06 
    ) 

    if !mes!==JUL (
     set mes=07 
    ) 

    if !mes!==AUG (
     set mes=08 
    ) 

    if !mes!==SEP (
     set mes=09 
    ) 

    if !mes!==OCT (
     set mes=10 
    ) 

    if !mes!==NOV (
     set mes=11 
    ) 

    if !mes!==DEC (
     set mes=12 
    ) 

    ren %%a !x:~20,4!!mes!!x:~15,2!.txt 

    echo !x:~20,4!!mes!!x:~15,2!.txt 

)