Bài đăng đầu tiên của tôi, hầu hết các câu hỏi đã được giải quyết bằng cách sử dụng kiến thức thân thiện được cung cấp tại đây. Nhưng bây giờ tôi hết ý tưởng, một lần nữa với một câu hỏi về xử lý các ký tự độc trong cmd.exe.Dấu hiệu phần trăm thoát trong các biến đã cho
Giả sử có một biến chuỗi đã cho kèm theo dấu ngoặc kép. Hầu hết các ký tự độc đã được thay thế bởi các ký tự thông thường trước đó, những ký tự bên trái làm phiền tập lệnh là "&", "(", ")" và "%". Chuỗi phải được lặp lại thành một tệp không có dấu ngoặc kép sau đó. Vì vậy, tôi đã có ý tưởng để thoát khỏi nhân vật độc tăng gấp ba lần:
@echo off & setlocal ENABLEEXTENSIONS
SET AlbumArtist=%1
CALL :EscapePoisonChars %AlbumArtist% AlbumArtist_VDN
SET "FlacHyperLink==hyperlink^("file://%AlbumArtist_VDN%"^;"LossLess"^)")
echo %FlacHyperLink%
echo %AlbumArtist_VDN%
endlocal &GOTO:EOF
:EscapePoisonChars
@echo off & setlocal ENABLEEXTENSIONS
SET TmpString=%1
SET TmpString=%TmpString:&=^^^&%
SET TmpString=%TmpString:(=^^^(%
SET TmpString=%TmpString:)=^^^)%
endlocal&SET %2=%TmpString:~1,-1%&GOTO :EOF
Khi tôi gọi kịch bản của tôi ở trên tôi nhận được kết quả mong muốn - ngoài các ký hiệu phần trăm mất tích:
G:\YAET\20130204_Work>TryAmper.bat "100% Rock & Roll (7' UpMix)"
=hyperlink("file://100 Rock & Roll (7' UpMix)";"LossLess")
100 Rock & Roll (7' UpMix)
G:\YAET\20130204_Work>
Tôi biết rằng phần trăm có thể được tự thoát. Vì vậy, "%%" thường sẽ dẫn đến một chữ "%". Nhưng tôi không thể tìm được quy trình thay thế làm việc cho các dấu hiệu phần trăm vì cmd luôn diễn giải nó như một biến và cố gắng mở rộng nó. Đây có phải là hướng hoàn toàn sai để xử lý vấn đề này hay chỉ là sự hiểu lầm về việc mở rộng biến? Bất kỳ gợi ý chào đón! Cảm ơn!
Chúc mừng, Martin
Sửa Removed mã riêng, xem dưới đây câu trả lời Jeb cho giải pháp làm sạch.
Cảm ơn bạn đã trợ giúp, Martin
Jeb, tôi hy vọng bạn sẽ trả lời sau khi tôi thấy [link] (http://ss64.org/viewtopic.php?pid=4919#p4919) với hack đáng kinh ngạc của bạn tôi vẫn không hiểu hoàn toàn. Cuối cùng, đề xuất của bạn ở trên đã giải quyết được vấn đề của tôi với các ký tự độc. Tôi đã thêm một đoạn mã ngắn dựa trên giải pháp của bạn cho câu hỏi của tôi bởi vì tôi muốn sử dụng định dạng khối mã. Cảm ơn rất nhiều! Martin – CmdQuestion
Aarrg - anh làm cái quái gì thế? Tôi đã thêm một giải pháp _clean_ – jeb
Jeb, xin lỗi nếu bạn không hài lòng với công việc của tôi. Sử dụng mã tôi gặp phải không có vấn đề cho bất kỳ sự kết hợp của các nhân vật, vì vậy tôi nghĩ rằng nó sẽ là tốt, đủ để trình bày kết quả ở đây. Tôi bỏ qua nó và chỉ đề cập đến giải pháp của bạn bây giờ. Martin – CmdQuestion