Tôi muốn thay thế tất cả các ký tự gạch dưới ( _
) bằng dấu cách ( ) trong tên tệp.
Làm thế nào tôi có thể làm điều này một cách nhanh chóng, khi tôi có nhiều _
nhân vật để thay thế?
Tôi muốn thay thế tất cả các ký tự gạch dưới ( _
) bằng dấu cách ( ) trong tên tệp.
Làm thế nào tôi có thể làm điều này một cách nhanh chóng, khi tôi có nhiều _
nhân vật để thay thế?
Câu trả lời:
vbScript nên làm điều đó cho bạn. Tạo một tệp có tên "rename_underscores.vbs" chứa nội dung sau.
Set objFso = CreateObject("Scripting.FileSystemObject")
Set Folder = objFSO.GetFolder("c:\test\")
For Each File In Folder.Files
sNewFile = File.Name
sNewFile = Replace(sNewFile,"_"," ")
if (sNewFile<>File.Name) then
File.Move(File.ParentFolder+"\"+sNewFile)
end if
Next
Hãy chắc chắn rằng tên thư mục là chính xác. (Trong ví dụ này, tôi đã sử dụng c: \ test) Và sau đó nhấp đúp vào tệp của bạn để thực hiện đổi tên.
Tôi khuyên bạn nên sử dụng công cụ của bên thứ 3 như Tiện ích đổi tên hàng loạt . Nó miễn phí và nó có trình cài đặt dưới 1 MB.
Đây là trong các lĩnh vực của một tập tin bat. Tạo một tệp bat (Mới-> Tệp văn bản, đổi tên phần mở rộng thành .bat) sau đó sao chép các phần màu xanh bên dưới vào đó.
Tôi sẽ chia nó thành nhiều phần và giải thích những gì nó đang làm.
In trạng thái hiện tại của thư mục để so sánh sau
dir /b
Liệt kê các tệp trong thư mục, sau đó cho tất cả các tệp có dấu gạch dưới và kết thúc bằng .txt, gọi ProcessFile trên chúng.
for %%f in (*_*.txt) do call :ProcessFile %%f
goto :finished
Cú pháp "str =% str: x = y%" thay thế các trường hợp của x bằng y. Trong trường hợp này, chúng tôi thay thế "_" bằng không có gì
:ProcessFile
set str=%1
rename %1 %str:_=%
goto :eof
Đó là nó!
Bây giờ nó chỉ in những gì đã thay đổi để chúng tôi có thể xác nhận nó hoạt động như mong đợi;
:finished
echo ----
dir /b
Kết quả (Không phải là một phần của tập tin bat)
baz_ing.txt
big_rawr.foo
foo_bar.txt
multiple_underscores_test.txt
----
bazing.txt
big_rawr.foo
foobar.txt
multipleunderscorestest.txt
Như những người khác đã đề cập, không có cách nào để thực hiện chính xác những gì bạn muốn mà không sử dụng tập lệnh hoặc tập tin bó. Chẳng hạn, trong PowerShell, bạn có thể thực hiện những gì bạn muốn khá dễ dàng:
cd "C:\Users\MyName\Documents\MyDirectory"
Dir | Rename-Item –NewName { $_.name –replace "_"," " }
Chỉ cần đảm bảo thay thế "C: \ Users \ MyName \ Documents \ MyDirectory" bằng đường dẫn đến thư mục của bạn.
Để biết thêm chi tiết và các tùy chọn khác, bao gồm một số điều bạn có thể làm chỉ bằng Explorer, xem tại đây: http://www.howtogeek.com/111859/how-to-batch-rename-files-in-windows-4-ways- đổi tên-nhiều tập tin /
Đây là tập lệnh đổi tên ruby hàng loạt của tôi . Tôi chưa sử dụng các công cụ đổi tên hàng loạt khác nhưng tôi nghĩ kịch bản của tôi rất dễ sử dụng và rất linh hoạt. Đây là lệnh cho trường hợp của bạn:
ruby bren.rb *_* "_/ "
Tôi đã thiết lập môi trường windows của mình theo cách bren.rb có thể được thực thi như một tệp thực thi từ bất kỳ thư mục nào.
Công cụ đổi tên dựa trên Windows, mạnh nhất có, và nó miễn phí. http://www3.telus.net/pfrank/
Điều này không trả lời rõ ràng câu hỏi ('.. trong Explorer'), nhưng tôi đã tìm thấy phần mềm hữu ích nhất để làm điều này là Adobe Bridge (Miễn phí)
Đã thêm tiền thưởng: Hỗ trợ Regex!