2015-01-15 27 views
5

:Windows toplu iş adlarına önek eklemek için toplu iş, neden iki kez ekler? Bu toplu iş dosyasını kullanıyorum bir klasördeki tüm pdf dosyaları için basit <em>"Merhaba"</em> önek eklemek için

FOR %%F IN (*.pdf) DO (RENAME "%%F" "hello%%F") 

bir "rename.bat" dosyasının içine bu Kaydedilen ve içine yerleştirdi Klasöre yeniden adlandırılacak dosyalara ihtiyacım var. Sonra sadece "rename.bat" üzerine çift tıklıyorum.

Bu neredeyse çalışır ancak ilk dosya iki kez eklenmiş öneki alır.

en klasöründe diyelim ben adres:

  • hellohelloA.pdf
  • helloB.pdf
  • helloC: .pdf, B.pdf, C.pdf, onlar dönüştürülür olsun .pdf,

Toplu iş dosyasındaki sorunun ne olduğunu biliyor musunuz?


Ben dosyaları birden fazla olduğunda o hep yapıyor ettim. Klasörde sadece bir dosya olduğunda tamam çalışıyor, ancak çok kullanışlı değil :-). Bu iyi çalışıyor

FOR /f "delims=" %%F IN ('DIR /a-d /b *.pdf') DO (RENAME "%%F" "hello%%F") 
+1

DIR/B'yi kullanın ve isimlerin listesini bir metin dosyasına pipetleyin. O zaman bu listeyi tekrarlayın. Şu anda bu klasörde değişiklik yaparken klasör olsa yineleniyorsunuz. – RGuggisberg

+0

olası bir kopyası [Toplu Dosyada Bir Dosya İçin İki Dosyayı Yeniden Adlandırır] (http://stackoverflow.com/questions/18519458/for-loop-in-batch-file-renames-one-file-twice) – MichaelS

cevap

7

/f varolan bir dosyayı recapturing konusunu kaldırır.

+0

Teşekkürler bu ! "/ F" delims = "' hakkında okudum ve görüyorum ki "DIR/a-d/b * .pdf '" komutunu da çağırıyorsunuz. Ama lütfen neden benimkinin çalışmadığını açıklar mısınız? Hatta test etmek için '%% F IN (* .pdf) DO (ECHO "%% F") 'yi toplu iş dosyasında çağırmayı denedim ve sadece 3 dosyayı yankılanıyor, dolayısıyla RENAME' i kullanırken neden olduğunu biliyor musunuz? ECHO yerine 1. dosyayı iki kez mi değiştiriyor? –

+0

RENAME, üzerinde çalıştığınız dosyaların listesini değiştirir, echo, –

+1

'%% F İÇİNDİR… dosya dizinlerini disk dizininden birer birer alır, böylece dizin değiştiğinde, FOR'leri de alır, _may_ değiştirir, Bu çeşitli faktörlere bağlıdır. '/ F %% F ... in ('DIR') ...' _first_ DIR komutunu yürüt ve _then_ dosya isimlerini onun tarafından oluşturulan listeden al./F formunun, DIR komutunu yürütmek için ikinci bir cmd.exe kopyasını yürütmesini ve ayrıca sonunda silinen geçici bir dosya oluşturmayı gerektirdiğini unutmayın. – Aacini

0
@echo off 
echo. 
echo. Add Whatever Prefix... 
echo. 
echo. You Want To Add... 
echo. 
echo. To The Filename... 
echo. 
set /p variable=" > " 
setlocal enabledelayedexpansion 
for /f "delims=" %%a in (' dir /b /a-d *.pdf') do (
    set oldName=%%a 
    Set newName=%variable%!oldName! 
    Ren "!oldName!" "!newName!" 
) 
exit 

..... Hiç ... ... Hiçbir Çift Öneki It Out deneyin: