его возможность создавать пользовательские пакеты для перемещения файлов пользовательских расширений в новую созданную папку - PullRequest
0 голосов
/ 03 ноября 2019
move *.docx %userprofile%\Documents\ move *.pdf %userprofile%\Documents\ move *.txt %userprofile%\Documents\ move *.xls %userprofile%\Documents\

все это в одном cmd ??

1 Ответ

1 голос
/ 03 ноября 2019

A - это просто серия команд, разделенных новыми строками:

Move *.docx "%UserProfile%\Documents\NewDirectory"
Move *.pdf "%UserProfile%\Documents\NewDirectory"
Move *.txt "%UserProfile%\Documents\NewDirectory"
Move *.xls "%UserProfile%\Documents\NewDirectory"

Или конкатенации, (амперсанд &) :

Move *.docx "%UserProfile%\Documents\NewDirectory" & Move *.pdf "%UserProfile%\Documents\NewDirectory" & Move *.txt "%UserProfile%\Documents\NewDirectory" & Move *.xls "%UserProfile%\Documents\NewDirectory"

Вы также можете использовать :

For %%I In (docx pdf txt xls) Do Move "*.%%I" "%UserProfile%\Documents\NewDirectory"

Самая большая проблема всех вышеперечисленных методов заключается в том, что для большинства команд Windows видит *.ext как любое расширение, начинающееся с .ext, это означает, например, что .xls на самом деле будет также включать расширения .xlsb, .xlsm и .xlsx.

Существует несколько способов предотвращениятаких проблем, во-первых, использовать if команды:

For %%I In (docx pdf txt xls) Do If /I Not "%%~xI"==".xlsb" If /I Not "%%~xI"==".xlsm" If /I Not "%%~xI"==".xlsx" Move "*.%%I" "%UserProfile%\Documents\NewDirectory"

Фильтруя результаты с помощью :

For /F "EOL=? Delims=" %%I In ('Dir /B /A:-D *.docx *.pdf *.txt *.xls 2^>NUL ^| "%__AppDir__%findstr.exe" /V /I "\.xlsb$ \.xlsm$ \.xlsx$"') Do Move "*.%%I" "%UserProfile%\Documents\NewDirectory"

Проблема со всемиМетоды, описанные выше, заключаются в том, что они ожидают, что каталог назначения действительно будет существовать первым, что означает, что вам нужно использовать команду MD, то есть MD "%UserProfile%\Documents\NewDirectory" 2>NUL

Использование , (который, несмотря на свое имя, может также move файлы) , каталог назначения также будет создан автоматически, еслион еще не существует, и вы можете использовать его опцию /XF, чтобы исключить эти, возможно, мошеннические расширения файлов:

"%__AppDir__%Robocopy.exe" "." "%UserProfile%\Documents" *.docx *.pdf *.txt *.xls /Mov /XF *.xlsb *.xlsm *.xlsx

Я использовал "." для представления текущего каталога в качестве исходного каталога, (вы, конечно, можете использовать определенный полный или относительный путь, если требуется) .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...