2009-01-18 14 views
8

olan bir değişkenden dosya adını oku Şu anda bir değişkeni toplu olarak almanın ve yalnızca dosya adını ayrıştırmanın bir yolunu arıyorum. Örneğin, toplu iş dosyamı a -s parametresini sonradan kaynak değişkenime ayarlanan başka bir uygulamadan geçiriyorum. Kaynak dosya değişkeni genellikle şöyle bir şey içerir: C: \ Program Files \ myapp \ Instance.1 \ Data \ filetomove.ext.Toplu İş: Yalnızca bir dosya ve dosya adı

Değişkenin sonundan ilk "\" olana kadar okumayı ve sonucu yeni bir değişken dosya adına ayarlamayı kabul ediyorum ancak "for/f" komutunu başarılı bir şekilde kullanamadım.

Herhangi bir yardım çok takdir!

Güncelleme: Sadece standart XP veya Windows 2000/2003 kullanılabilir ... (Kaynak kitlerinin kurulu olduğunu kabul edemiyorum). N endeksi

set FILENAME=%~nxN 

geçerli: onun vb bir deyişle komut argüman,% 1,% 2 gibi geliyor ise

cevap

9

, böyle bir değişken içine sadece dosya adını ve uzantısını çıkarabilir argümanın olmaz,

set FILENAME="%~nx1" 

ekstra parantez sağlayacağına duyduğu özel karakterler, örneğin '&' olarak:

@echo off 
set FILENAME=%~nx1 
echo %FILENAME% 
+0

Teşekkür ederiz! Yardımı tekrar okuyordum ve% ~ nxI talimatlarını zorlaştırıyordum. Teşekkürler!!!! – Michael

+0

Evet. Bu talimatlar, gerçekten onları bulmak için yeterince şanslıysanız gerçekten çok zayıf. –

+0

+1 sormak üzereydi, SO harika bir yinelenen soru dedektörü var :-) –

2

Biraz geliştirilmiş bir versiyonu: Örneğin, bu senaryo ilk argüman sadece dosya adını yankılanacak toplu işlem sırasında müdahale eder.