2012-12-23 37 views
6

Tôi có một số tập tin như AAA_a001.jpg, BBB_a002.jpg, CCC_a003.jpg trong Windows 7 và tôi đang cố gắng sử dụng hàng loạt để đổi tên các tập tin để a001_AAA.jpg, a002_BBB.jpg, a003_CCC.jpg.cửa sổ hàng loạt tập tin đổi tên

Chỉ cần trao đổi nội dung giữa _.

Tôi đã tìm kiếm một lúc nhưng vẫn không biết cách thực hiện việc này. Có ai giúp được không? Cảm ơn.

Trả lời

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 

Lưu ý: Tên được chia ở sự xuất hiện đầu tiên của _. Nếu tệp được đặt tên là "part1_part2_part3.jpg", tệp sẽ được đổi tên thành "part2_part3_part1.jpg"

+0

Đây chính xác là những gì tôi cần. Cảm ơn!! – yuchien

+0

vẫn còn là một vấn đề nhỏ: nó trao đổi ".jpg" quá. Ví dụ part1_part2.jpg => part2.jpg_part1 Orz – yuchien

+0

@ raphael0914 - ??? Nó hoạt động hoàn hảo cho tôi: part1_part2.jpg -> part2_part1.jpg – dbenham

24

Sử dụng REN lệnh

Ren là dành cho rename

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

dụ

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

nó sẽ thay đổi aaa.txt để bbb.txt

Mã của bạn sẽ là:

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 

và vân vân

IT WILL NOT WORK IF THERE IS SPACES! 

Hy vọng nó sẽ giúp: D

+2

'chỉ để trao đổi nội dung giữa '_'' Bạn có hiểu câu hỏi này là gì không? – jadkik94

+0

Tôi biết tôi nên sử dụng ren để đổi tên tập tin, nhưng vấn đề của tôi là tôi không biết làm thế nào để làm những thao tác chuỗi Orz – yuchien

+0

Không thực sự:/Vui lòng sử dụng ** giải thích tốt về trao đổi nội dung **? – Itsproinc

1

Tôi giả sử bạn biết độ dài của phần trước _ và sau dấu gạch dưới, cũng như phần mở rộng. Nếu bạn không nó có thể phức tạp hơn một chuỗi con đơn giản.

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 
) 

Tôi vừa mới đưa ra kịch bản này và tôi đã không thử nghiệm. Hãy xem thisthat để biết thêm thông tin.

NẾU bạn muốn giả sử bạn không biết vị trí của _ và độ dài và phần mở rộng, tôi nghĩ bạn có thể làm điều gì đó cho các vòng kiểm tra chỉ số của _, sau đó chỉ số cuối cùng của . , bọc nó trong một điều goto và làm cho nó hoạt động. Nếu bạn sẵn sàng gặp rắc rối đó, tôi khuyên bạn nên sử dụng WindowsPowerShell (hoặc Cygwin) ít nhất (vì lợi ích của riêng bạn) hoặc cài đặt một ngôn ngữ kịch bản nâng cao hơn (nghĩ Python/Perl) bạn sẽ nhận được nhiều sự hỗ trợ hơn đường.

5

như Itsproinc đã nói, lệnh REN hoạt động!

nhưng nếu đường dẫn tập tin/tên của bạn có khoảng trắng, dấu ngoặc kép sử dụng ""

dụ:

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

add ""

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

hy vọng nó sẽ giúp

0

tôi đổi tên trong mã

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 

) 
Các vấn đề liên quan