2010-01-08 19 views
67

; ile tüm .doc dosyalarını listelemek istediğim bir dizin var. Windows toplu iş dosyasındaki dizeler nasıl birleştirilir?

Ben şu toplu komut echos tüm dosyaları biliyoruz:

for /r %%i In (*.doc) DO echo %%i 

Ama şimdi, bir değişkene hepsini koymak aralarında bir ; ekleyip hepsini birden yankı istiyorum.
Bunu nasıl yapabilirim?

set myvar="the list: " 
for /r %%i In (*.doc) DO <what?> 
echo %myvar% 

cevap

58

Ne hakkında:

@echo off 
set myvar="the list: " 
for /r %%i in (*.doc) DO call :concat %%i 
echo %myvar% 
goto :eof 

:concat 
set myvar=%myvar% %1; 
goto :eof 
+2

teşekkürler Bu yanıt için çok için! Sadece bir toplu iş dosyasına dinamik olarak bir sınıf yolu oluştururken bir problemi çözdü :) Gerekli değişiklikleri ekledim, ama benim problemim bunu yapıyordu ve bu da bunu çözdü! – Charliemops

43

, sen var doğru olacak şekilde env değişkenler (tip 'yardım Setlocal' veya 'yardım cmd') olarak Gecikmeli Genişleme etkinleştirmeniz gerekir Rubens'ın çözümüne dayanan

@echo off 
setlocal enabledelayedexpansion 
set myvar=the list: 
for /r %%i In (*.sql) DO set myvar=!myvar! %%i, 
echo %myvar% 

da (MSDN) şu sınırlama dikkate:

döngü değerlendirilmiştir 10

Maksimum tekil ortam değişken boyut 8192bayttır.

+1

Kısıtlama yanlış. Windows'daki maksimum ortam değişken boyutu yaklaşık 64 KiB'dir, yani yaklaşık 32k karakterdir. Ancak, toplu iş dosyalarında, maksimum komut satırı uzunluğunun 8190 karakter olması sorunuyla karşılaşırsınız, bu nedenle burada ayarladığınız her ortam değişkeni daha kısa olmalıdır. Ayrıca, 65 KiB toplam çevre kısıtlaması sahte. Sadece birkaç MiB'de problemsiz bir çevre değişkenini yarattım. – Joey

+2

Bağlantı, 64 MB eşit olacak 65 THOUSAND KB diyor. Bununla tartışmayacağım, çünkü onunla hiç ilgilenmedim. – devio

+1

Vay teşekkür ederim çok fazla adam! Benim günümü yaptın :-) – Julien

0

@fname veya @ext değişkenlerinin basitçe birleştirilebileceğini unutmayın. Bu:

forfiles /S /M *.pdf /C "CMD /C REN @path @[email protected]" 

tüm PDF dosyalarını yeniden adlandırır "filename_old.pdf"

İlgili konular