2015-01-15 4 views
5

Um einen einfachen „Hallo“ Präfix für alle PDF-Dateien in einem Ordner diese Batch Ich verwende Datei hinzufügen:Windows Batch zum Hinzufügen von Präfix zu Dateinamen, warum zweimal hinzugefügt?

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

diese in eine „rename.bat“ gespeicherte Datei und platziert es in Der Ordner Ich brauche die Dateien, die umbenannt werden sollen. Dann doppelklicke ich einfach auf "rename.bat".

Dies funktioniert fast, aber die erste Datei erhält das Präfix zweimal hinzugefügt.

Lassen Sie uns im Ordner sagen, ich habe:

  • hellohelloA.pdf
  • helloB.pdf
  • helloC: A.pdf, b.pdf, C.pdf, werden sie in umge .pdf,

Wissen Sie, was in der Batch-Datei falsch ist?


Ich bemerkte es das immer tut, wenn Dateien mehr als eine sind. Es funktioniert, wenn nur eine Datei im Ordner ist, aber es ist nicht sehr nützlich :-).

+1

Verwenden Sie DIR/B und leiten Sie die Liste der Namen in eine Textdatei. Dann wiederhole diese Liste. Momentan durchlaufen Sie den Ordner, während Sie Änderungen in diesem Ordner vornehmen. – RGuggisberg

+0

mögliches Duplikat von [For-Schleife in Batch-Datei benennt eine Datei zweimal um] (http://stackoverflow.com/questions/18519458/for-loop-in-batch-file-renames-one-file-twice) – MichaelS

Antwort

7

/f entfernt die Ausgabe von zurückzuerobern eine vorhandene Datei:

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

Danke, das funktioniert ! Ich lese über '/ F" delims = "', und ich sehe, dass Sie auch den Befehl '' DIR/a-d/b * .pdf'' aufrufen. Kannst du mir bitte erklären, warum meins nicht funktioniert? Um zu testen, habe ich sogar versucht, die Batch-Datei 'FOR %% F IN (* .pdf) DO (ECHO" %% F ")' aufzurufen und es werden nur 3 Dateien wiedergegeben, also wissen Sie warum bei der Verwendung von 'RENAME' anstelle von "ECHO" wird die 1. Datei zweimal umbenannt? –

+0

RENAME ändert die Liste der Dateien, die Sie bearbeiten, echo nicht –

+1

'FOR %% F ...' erhalten Dateinamen nacheinander aus dem Disk-Verzeichnis, wenn das Verzeichnis ändert, die Namen, die FOR bekommt auch _may_, obwohl Dies hängt von mehreren Faktoren ab. 'FOR/F %% F ... in ('DIR') ...' _first_ den Befehl DIR ausführen und _dann_ Dateinamen aus der von ihm erzeugten Liste holen. Beachten Sie, dass/F Formular eine zweite Kopie von cmd.exe ausführen muss, um den Befehl DIR auszuführen und auch eine temporäre Datei zu erstellen, die am Ende gelöscht wird. – 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 

Dieses gut funktioniert ..... Probieren Sie es aus ... Nein Doppel Präfix ... haupt.

Verwandte Themen