Biến môi trường thoát hàng loạt CMD trong params


3

Tôi phải viết một tệp bó với biến môi trường một param:

c:\myapp.exe -f "%APP_HOME%\file.conf" 

Tôi cần phải truyền chính xác chuỗi %APP_HOME%là param và không phải giá trị của nó. Làm thế nào tôi có thể làm được?

Nói cách khác, tôi không muốn loại bỏ biến trong thời gian chạy hàng loạt nhưng tôi muốn cho ứng dụng sử dụng nó làm đường dẫn tham số, nếu tôi thay đổi biến môi trường này, tôi không muốn thay đổi biến trong ứng dụng.


1
Bạn đã thử thoát các dấu hiệu phần trăm bằng dấu mũ (^) chưa?
paradroid

Câu trả lời:


2

Tôi cần chuyển chính xác chuỗi "% APP_HOME% dưới dạng param

  1. Thay thế %bằng^%
  2. Xóa "s

    c: \ myapp.exe -f ^% APP_HOME ^% \ file.conf

kiểm tra.cmd:

@echo %1 %2 %3

đầu ra:

F:\test>test c:\myapp.exe -f ^%APP_HOME^%\file.conf
c:\myapp.exe -f %APP_HOME%\file.conf
F:\test>

Đọc thêm


Ok, nhưng tôi nên loại bỏ dấu ngoặc kép? Làm thế nào để giải quyết nếu có một không gian trong đường dẫn?
Tobia

@Tobia Bạn phải xóa dấu ngoặc kép để dừng việc mở rộng. Bạn có thể đặt các trích dẫn trở lại bên trong tệp bó nếu cần thiết.
DavidPostill

@Tobia Hãy thử thoát khỏi không gian bằng một dấu mũ khác. Không chắc chắn rằng nó sẽ hoạt động trong Windows, nhưng đáng để thử nghiệm.
paradroid

1
@Tobia Bạn có thể thử sử dụng setlocal EnableDelayedExpansion. ss64.com/nt/delayedExansion.html
paradroid

@paradroid setlocal EnableDelayedExpansionkhông giúp được.
DavidPostill
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.