Ich möchte Dateien, die einen Teil seines Namens gemeinsam haben, aus einer bekannten Anzahl von Unterordnern kopieren. Ich habe versucht mit diesem Code:Batch: Kopieren von Dateien mit demselben Teilnamen von Unterordnern zu einem anderen
@Echo Off
rem Check if the aFolder exists and delete it if it exists
IF EXIST "%~dp0\aFolder" (
rd /s /q "%~dp0\aFolder"
)
rem Create a new aFolder
mkdir "%~dp0\aFolder"
rem Copy the files from the subfolders inside of bFolder to aFolder
For /F "tokens=1" %%A in (%~dp0\subFoldersList.txt) do (
For /F "tokens=1" %%B in (%~dp0\formatList.txt) do (
pushd "%~dp0\bFolder\%%A"
For %%C in (%%AcommonPart.%%B) do xcopy %%C "%~dp0\aFolder"
)
)
Der Code verwenden zwei TXT-Dateien, die verschiedene Daten enthält. In subFoldersList.txt:
subFolder1
subFolder2
subFolder3
In formatList.txt:
xls
xlsx
xlsm
Überprüfung der Code die Schleife nicht nie und ich unbekannt läuft, warum.
Edit:
Der Ordner Skelett, das ich benutze, ist dies:
rootFolder
|->aFolder
||-->subFolder1
|||--->subFolder1commomPart.xlsx (for example)
|||--->subFolder1other1Part.xlsm (for example)
|||--->subFolder1other2Part.xls (for example)
||-->subFolder2
|||--->subFolder1commomPart.xlsm (for example)
|||--->subFolder1other1Part.xlsx (for example)
|||--->subFolder1other2Part.xls (for example)
||-->subFolder3
|||--->subFolder1commomPart.xls (for example)
|||--->subFolder1other1Part.xlsm (for example)
|||--->subFolder1other2Part.xlsx (for example)
|->bFolder
|->subFoldersList.txt
|->formatList.txt
|->Other Stuff
Ich möchte dieses Ergebnis erhalten:
rootFolder
|->aFolder
||-->subFolder1
|||--->subFolder1commomPart.xlsx (for example)
|||--->subFolder1other1Part.xlsm (for example)
|||--->subFolder1other2Part.xls (for example)
||-->subFolder2
|||--->subFolder1commomPart.xlsm (for example)
|||--->subFolder1other1Part.xlsx (for example)
|||--->subFolder1other2Part.xls (for example)
||-->subFolder3
|||--->subFolder1commomPart.xls (for example)
|||--->subFolder1other1Part.xlsm (for example)
|||--->subFolder1other2Part.xlsx (for example)
|->bFolder
||--->subFolder1commomPart.xlsx (for example)
||--->subFolder1commomPart.xlsm (for example)
||--->subFolder1commomPart.xls (for example)
|->subFoldersList.txt
|->formatList.txt
|->Other Stuff
**% ~ dp0 ** hat bereits einen nachgestellten Backslash, entfernen Sie die, die Sie hinzugefügt haben, folgen Sie ihm! – Compo
Ich denke 'Für %% C in (%% AcommonPart. %% B) sollte xcopy %% C"% ~ dp0 \ aFolder "' geändert werden in 'Für %% C in (" commonPart. %% B ") do xcopy "%% ~ C" "% ~ dp0 \ aFolder \" ', weil' pushd' bereits in den Unterordner '%% A' gewechselt ist; Beachten Sie auch das verbesserte Quoting, das '~' in '%% ~ C' und den nachfolgenden Backslash am Ziel. Sie sollten auch 'Tokens = 1 'zu' delims = 'ändern. Bitte zeigen Sie uns einige Beispiele von Dateinamen ... – aschipfl
Sie müssen auch ein 'POPD' ausgeben. – Squashman