Я надеюсь, что некоторые могут мне помочь. Я провел последние несколько дней в поисках ответов в Google и ничего не нашел. У меня есть код из двух частей: первый извлекает все из подпапок, а затем вторая часть перемещает эти файлы по типу в другие папки, расположенные в другом месте. Я могу заставить код работать в тестовой настройке, но он не будет работать с файлами, которые я пытаюсь переместить. Я думаю, что это связано с именами файлов, в которых есть пробелы, но я не уверен. Вот коды. Спасибо, парни!
Часть первая
FOR /R C:\Users\Laptop02\Desktop\Folder 1 Test %%i IN (*.*) DO MOVE %%i C:\Users\Laptop02\Desktop\Folder 1 Test
Вторая часть
@echooff
set media=C:\Users\Laptop02\Desktop\Foder 2 Test
set jpg=C:\Users\Laptop02\Desktop\Foder 2 Test\mediadata
set xml=C:\Users\Laptop02\Desktop\Foder 2 Test\mediadata
move %dlDir%*.avi %media%
move %dlDir%*/*.avi %meia%
move %dlDir%*.mp4 %media%
move %dlDir%*/*.mp4 %media%
move %dlDir%*.mkv %media%
move %dlDir%*/*.mkv %media%
move %dlDir%*.jpg %jpg%
move %dlDir%**.xml %xml%
Спасибо еще раз.
Ответ 1 · рейтинг 2 · David Ruhmann
Хотя команда перемещения хороша и метод, описанный выше, работает, копирование или перемещение большого количества файлов должно быть быстрее с помощью следующей команды robocopy с поддержкой многопоточности:
@echo off
set "source=C:\Users\Laptop02\Desktop\Folder 1 Test"
set "media=C:\Users\Laptop02\Desktop\Foder 2 Test"
set "jpg=C:\Users\Laptop02\Desktop\Foder 2 Test\mediadata"
set "xml=C:\Users\Laptop02\Desktop\Foder 2 Test\mediadata"
robocopy /s /mov /mt "%source%" "%media%" *.avi
robocopy /s /mov /mt "%source%" "%media%" *.mp4
robocopy /s /mov /mt "%source%" "%media%" *.mkv
robocopy /s /mov /mt "%source%" "%jpg%" *.jpg
robocopy /s /mov /mt "%source%" "%xml%" *.xml
pause
Кроме того, было бы быстрее переместить файлы только один раз:
@echo off
set "source=C:\Users\Laptop02\Desktop\Folder 1 Test"
set "media=C:\Users\Laptop02\Desktop\Foder 2 Test"
set "jpg=C:\Users\Laptop02\Desktop\Foder 2 Test\mediadata"
set "xml=C:\Users\Laptop02\Desktop\Foder 2 Test\mediadata"
cd "%source%"
for /r "%~dp0" %%A in (*) do (
if "%%~xA"==".avi" move "%%~A" "%media%\"
if "%%~xA"==".mp4" move "%%~A" "%media%\"
if "%%~xA"==".mkv" move "%%~A" "%media%\"
if "%%~xA"==".jpg" move "%%~A" "%jpg%\"
if "%%~xA"==".xml" move "%%~A" "%xml%\"
)
pause
Ответ 2 · рейтинг 3 · Eric J.
Вам нужно заключать в кавычки файлы, в имени которых могут быть пробелы, например.
move "%dlDir%*.avi" "%media%"
ОБНОВЛЕНИЕ
Для части for добавьте
"delims="
как это:
FOR /F "delims=" IN (dir /b /s "C:\Users\Laptop02\Desktop\Folder 1 Test")