Batch-Problem - Ordner erstellen und Dokumente verschieben

Batch-Problem - Ordner erstellen und Dokumente verschieben

Ich versuche, in Windows 7 ein Batch-Skript zu erstellen, das die ersten 6 Zahlen von Hunderten von PDF-Dateien betrachtet, einen Ordner basierend auf den 6 eindeutigen Zahlen erstellt und die PDF-Dateien in die entsprechenden Ordner verschiebt. (Es gibt einige PDF-Dateien, die dieselben 6 eindeutigen Zahlen haben.)

Die folgende Stapelverarbeitung funktioniert bei mir fast. Sie erstellt Ordner für jedes eindeutige 6-stellige PDS, verschiebt jedoch nicht alle Dokumente: Beispiel: Folgendes wird in den Ordner 100036 verschoben: 100036.pdf wird verschoben, 1000361.pdf wird verschoben. 1000361copy wird verschoben.

Wenn der Dateiname ein Leerzeichen enthält, wird die Datei nicht in den Ordner 100036 verschoben. 100036 - 1.pdf, 100036 - copy.pdf werden nicht verschoben

Irgendwelche Ideen, wie man das beheben kann?

Vielen Dank im Voraus:

@echo off
REM This script creates folders based on file names and moves those files into the folders.  
REM *.pdf is the search term. Change this to search for different files.   
REM md %name:~0,6% will make a directory based on the first 6 characters of the file name. Change to 5% for the first 5 characters. 
REM move %* %name:~0,6% will move the file to the directory based on the first 6 characters of the file name. Change to 5% for the first 5 characters.

for /f %%F in ('dir/b/a-d *.pdf') do call :sub1 %%F
goto :eof

:sub1
set name=%1
md %name:~0,6%
move %* %name:~0,6%

Bearbeitet:

 @echo off
    for /f "tokens=*" %%F in ('dir/b/a-d *.pdf') do call :sub1 %%F
    goto :eof

    :sub1
    set name=%1
    md %name:~0,6%
    move %* %name:~0,6%

Antwort1

Da for /fdie Trennung mit Leerzeichen erfolgt, sollten Sie zur Verarbeitung des vollständigen Dateinamens die Option „tokens=*“ hinzufügen:

for /f "tokens=*" %%F in ('dir/b/a-d *.pdf') do call :sub1 %%F

AKTUALISIEREN: Aufgrund des Leerzeichens muss mv auch in Anführungszeichen gesetzt werden:

move "%*" "%name:~0,6%"

verwandte Informationen