Hoán đổi các ký tự trong tên tệp trong tệp bó của windows


2

Tôi có một thư mục với các tập tin hình ảnh. Cấu trúc tên tệp là ddmmyy2222.png trong đó dd = ngày, mm = tháng và yy = năm. Tôi đang cố gắng đổi tên chúng theo cấu trúc yyyymmdd.png như thế này:

120516222.png => 20160512.png

010616222.png => 20160601.png

190316222.png => 20160316.png

% 'và "đang khiến tôi phát điên. Nỗ lực cuối cùng của tôi là:

CHO / F %% n IN ('dir / b') DO (

đặt "oldfile = %% n"

đặt "d =% oldfile: ~ 0,2%"

đặt "m =% oldfile: ~ 2,2%"

đặt "y =% oldfile: ~ 4.2%"

đặt "newfile = 20% y %% m %% d%"

tiếng vang.% newfile%

)

Nhưng tôi thậm chí không thể đạt được tuyên bố RENAME vì tôi không nhận được những gì tôi cần trong ECHO. Chuyện gì vậy? Cảm ơn nhiều!



Có những ứng dụng ngoài đó sẽ đổi tên tập tin cho bạn. Làm điều này với cmdâm thanh như một thế giới đau thương. Có thể là thời gian để tìm hiểu một số kịch bản quyền hạn nếu các ứng dụng không hoạt động cho bạn.
jcollum

Hoặc tại sao không bỏ qua MS'ism và thử dùng Python; có rất nhiều ví dụ sẽ giúp bạn đến nơi bạn muốn. Ngay cả khi là người mới, bạn sẽ chạy qua cấp độ này.
Hannu

Ngoài ra hãy xem tại đây superuser.com/questions/347931/... - không phải là một dupe chính xác nhưng có liên quan
jcollum

Câu trả lời:


0

Chuyện gì vậy

Bạn cần phải kích hoạt mở rộng .

  • Mở rộng bị trì hoãn sẽ khiến các biến được mở rộng tại thời điểm thực hiện thay vì tại thời điểm phân tích.

Sử dụng tệp bó sau (test.cmd):

@echo off
setlocal EnableDelayedExpansion
for /f %%n in ('dir /b *.png') do (
  set "oldfile=%%n"
  set "d=!oldfile:~0,2!"
  set "m=!oldfile:~2,2!"
  set "y=!oldfile:~4,2!"
  set "newfile=20!y!!m!!d!"
  echo.!newfile!
  )
endlocal

Ghi chú:

  • Sửa đổi dirlệnh cho phù hợp.
  • %variable%được thay thế bằng !variable!khi sử dụng Trì hoãn mở rộng.

Thí dụ:

F:\test>dir *.png
 Volume in drive F is Expansion
 Volume Serial Number is 3656-BB63

 Directory of F:\test

02/06/2016  21:23                 0 010616222.png
02/06/2016  21:23                 0 120516222.png
02/06/2016  21:23                 0 90316222.png
               3 File(s)              0 bytes
               0 Dir(s)  1,769,583,063,040 bytes free

F:\test>test
20160601
20160512
20623190

F:\test>

Đọc thêm

  • Một chỉ mục AZ của dòng lệnh Windows CMD - Một tài liệu tham khảo tuyệt vời cho tất cả những thứ liên quan đến dòng cmd của Windows.
  • enableelayed mở rộng - Mở rộng bị trì hoãn sẽ khiến các biến được mở rộng tại thời điểm thực hiện thay vì tại thời điểm phân tích.

Cảm ơn! Nó đã làm việc. Bạn tiết kiệm cho tôi rất nhiều thời gian và điều quan trọng hơn, tôi đã tìm hiểu về việc mở rộng kích hoạt. Cảm ơn các tài liệu tham khảo.
dùng2261983
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.