Düşünebileceğim bir yol, kısmi yolları depolamak için diğer ortam değişkenlerini kullanmaktır; örneğin, eğer varsa
C:\this_is_a\long_path\that_appears\in_multiple_places\subdir1;
C:\this_is_a\long_path\that_appears\in_multiple_places\subdir2;
daha sonra yeni bir ortam değişkeni oluşturabilirsiniz.
SET P1=C:\this_is_a\long_path\that_appears\in_multiple_places
daha sonra orijinal yollarınız olur
%P1%\subdir1;
%P1%\subdir2;
DÜZENLEME: Diğer bir seçenek, uygun dosyaları işaret eden dosyaları bin
tutan bir dizin oluşturmaktır ..bat
.exe
DÜZENLEME 2: Ben Voigt'in başka bir yanıta yaptığı yorum, önerilen diğer ortam değişkenlerinin kullanılmasının %PATH%
, depolanmadan önce genişletilecekleri için uzunluğunu azaltmayabileceğinden bahsediyor . Bu doğru olabilir ve bunun için test etmedim. Diğer bir seçenek ise, daha uzun dizin adları için 8dot3 formlarını kullanmaktır, örneğin C:\Program Files
tipik olarak C:\PROGRA~1
. Daha dir /x
kısa isimleri görmek için kullanabilirsiniz .
DÜZENLEME 3: Bu basit test, Ben Voigt'in haklı olduğuna inanmamı sağlıyor.
set test1=hello
set test2=%test1%hello
set test1=bye
echo %test2%
Bunun sonunda, hellohello
yerine çıktı görüyorsunuz byehello
.
DÜZENLEME 4: Toplu iş dosyalarını belirli yolları ortadan kaldırmak için kullanmaya karar verirseniz %PATH%
, işlemin şeffaf olmasını sağlayacak şekilde, toplu iş dosyanızdan yürütülebilir dosyanıza bağımsız değişkenleri nasıl aktaracağınız konusunda endişeleriniz olabilir (yani, herhangi bir fark görmezsiniz) toplu iş dosyasının çağrılması ile yürütülebilir dosyanın çağrılması arasında). Toplu iş dosyaları yazma konusunda çok fazla deneyimim yok, ancak bu iyi çalışıyor gibi görünüyor.
@echo off
rem This batch file points to an executable of the same name
rem that is located in another directory. Specify the directory
rem here:
set actualdir=c:\this_is\an_example_path
rem You do not need to change anything that follows.
set actualfile=%0
set args=%1
:beginloop
if "%1" == "" goto endloop
shift
set args=%args% %1
goto beginloop
:endloop
%actualdir%\%actualfile% %args%
Genel bir kural olarak, toplu iş dosyalarıyla sabit sürücünüzü biçimlendirmek gibi her türlü şeyi yapabileceğinizden, toplu iş dosyalarını internetten çalıştırırken dikkatli olmalısınız. Yukarıdaki koda (yazdığım) güvenmiyorsanız, satırı değiştirerek test edebilirsiniz.
%actualdir%\%actualfile% %args%
ile
echo %actualdir%\%actualfile% %args%
İdeal olarak, çalıştırmadan önce her satırın tam olarak ne yaptığını bilmelisiniz.