Bắt đầu một chương trình dựa trên ký tự đại diện trong Batch Script


8

Tôi đang tạo một tập lệnh thiết lập cho một chương trình được phát triển bởi người khác. Trình cài đặt của họ sẽ không cài đặt qua phiên bản hiện có, vì vậy tôi cần gỡ cài đặt mọi cài đặt trước đó.

Trình gỡ cài đặt được đặt tên là unins $ num.exe, trong đó $ num là một số dường như tăng lên mỗi khi chương trình được cài đặt, (ví dụ: unins000.exe, unins001.exe, unins002.exe).

Hiện tại tôi đang sử dụng tập lệnh bó MS-DOS, vì những người khác trong bộ phận của tôi sẽ có cơ hội duy trì tập lệnh này, nhưng nếu nó dễ dàng hơn nhiều trong một số ngôn ngữ khác, tôi sẵn sàng thay đổi. Yêu cầu duy nhất là tôi không thể cài đặt trình thông dịch trước, vì vậy nó phải được tích hợp sẵn trong Windows.

Nền tảng mục tiêu của tôi là Windows XP và Windows 7. Hỗ trợ Windows Vista rất tốt, nhưng không bắt buộc.

Làm cách nào tôi có thể sử dụng ký tự đại diện để bắt đầu chương trình, vì vậy tôi không cần liệt kê 1000 exe ​​có thể?

Câu trả lời:


10

Điều này giả định rằng thư mục đích sẽ chỉ chứa một tệp unins $ num.exe có thể thực thi được và tập lệnh bó nằm trong cùng thư mục với trình gỡ cài đặt:

@echo off
FOR /f "tokens=*" %%G IN ('dir /b unins*.exe') DO %%G

Trong các điều khoản cơ bản, nó chỉ lặp qua đầu ra dir /b unins*.exevà thực hiện từng kết quả một.

Nếu bạn muốn nó để tập lệnh bó có thể được thực thi từ một vị trí khác (nhưng vẫn được giữ trong cùng thư mục với việc thực hiện gỡ cài đặt) thì bạn có thể thêm% ~ dp0 (đường dẫn của tập lệnh bó) vào tập lệnh:

@echo off
FOR /f "tokens=*" %%G IN ('dir /b %~dp0\unins*.exe') DO %~dp0\%%G

Cuối cùng, nếu bạn muốn tập lệnh bó trong một thư mục khác để thực hiện gỡ cài đặt thì bạn chỉ cần thay thế% ~ dp0 bằng bất kỳ đường dẫn đầy đủ nào, ví dụ: nếu trình gỡ cài đặt nằm trong C:\CoolProgram:

@echo off
FOR /f "tokens=*" %%G IN ('dir /b C:\CoolProgram\unins*.exe') DO C:\CoolProgram\%%G

Chỉnh sửa câu trả lời của tôi để thêm vào một vài khả năng khác.
Gaff

+1 giải pháp tốt cho một vấn đề không nên tồn tại. Tôi ngày càng bị thúc đẩy bởi tùy chọn # 2: Cài đặt msys, sử dụng bash. Hoặc tùy chọn 3: Cài đặt PowerShell, sử dụng PowerShell.
Craig Ringer
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.