Şu anda bir yükleme dosyasını çalıştıran bir .bat toplu iş dosyası yazıyorum. Yükleme dosyasını çalıştırmadan önce, uygulamanın yeniden yüklenmesini önlemek için dizinin var olup olmadığını kontrol ediyorum.
Bunu bir If Not Exist filename
deyimi kullanarak yapıyorum. Eğer yüklenen dosya mevcut değilse, yükleme dosyasını çalıştırıyorum.
Bazı nedenlerden dolayı, zaten yüklü olduğu uygulama ile test ettiğimde, uygulamayı üzerine yeniden yüklemeye çalışıyor.
İşte kodumun bir parçası:
cd "C:\Documents and Settings\John\Start Menu\Programs\"
pause
If NOT exist "Software Folder"\ (
start \\filer\repo\lab\"software"\"myapp"\setup.exe
pause
)
Yazılım Klasörünün
"C:\Documents and Settings\John\Start Menu\Programs\".alt dizini olduğu yerde,
Programlar` klasörümde var olup olmadığını kontrol ediyorum.
Startkomutumda bir sorun olmadığını biliyorum. Başlangıç
CD` komutumda ya da parametrelerinden birinde bir sorun olduğunu hissediyorum.
Çok teşekkürler, çocuklar!
Bununla ilgili, yeni başlayan veya biraz deneyimsiz bir kullanıcının bilmesi yararlı olabilecek bazı sorunlar fark ettim. İlk olarak...
CD /D "C:\Documents and Settings\%username%\Start Menu\Programs\"
iki şey var, birincisi CD'den sonra /D koymak dizinin değiştirildiğinden emin olmak için faydalı olabilir ama gerçekten gerekli değil, ikincisi bunu kullanıcıdan kullanıcıya aktaracaksanız adınız yerine %username% kodunu eklemelisiniz, bu kodu herhangi bir bilgisayarda kullanılabilir hale getirir, yeter ki setup.exe dosyanız sizin bilgisayarınızdakiyle aynı konumda olsun. tabii ki bundan emin olmak daha zor. Ayrıca...
start \\filer\repo\lab\"software"\"myapp"\setup.exe
Buradaki başlangıç kodu bu şekilde ayarlanabilir, ancak doğru sözdizimi şöyledir
start "\\filter\repo\lab\software\myapp\" setup.exe
Bu çalıştıracaktır: setup.exe, içinde bulunur: \filter\repo\lab...etc.\
Escobar Ceaser'ın cevabında olduğu gibi, tüm yolun etrafında tırnak işareti kullanmanızı öneririm. Bu tüm yolu "" içine sarmanın yaygın yoludur, sadece yol içindeki ayrı dizin adlarını değil.
Benim için işe yaramadığına dair benzer bir sorun yaşadım. Ancak ayrı dizin adları için yol içinde "" kullanma seçeneği yoktu çünkü yol, kendileri birden fazla dizin hiyerarşisini kapsayan ortam değişkenleri içeriyordu. Sonuç olarak, kapanıştaki " ile (
Parantezden önceki boşlukla birlikte doğru versiyon şöyle olacaktır
If NOT exist "C:\Documents and Settings\John\Start Menu\Programs\Software Folder" (
start "\\filer\repo\lab\software\myapp\setup.exe"
pause
)