Скопируйте файлы в каталоги, имена которых начинаются с последних 3 символов имен этих файлов - PullRequest
0 голосов
/ 07 мая 2019

У меня есть папка с именами файлов, как показано ниже:

xxx009.dcm
xxx010.dcm
xxx011.dcm 
.
.
.
xxx250.dcm

Я хотел бы скопировать каждый файл с именем файла, оканчивающимся конкретными цифрами, и вставить их в папку, содержащую такую ​​же цифру, например ::

Copy xxx009.dcm to C:\Test\File9ab
Copy xxx010.dcm to C:\Test\File10ab
Copy xxx011.dcm to C:\Test\File11ab
.
.
.
Copy xxx250.dcm to C:\Test\File250ab

Я настоящий новичок, и мне нужно создать командный файл, чтобы выполнить эту работу за меня. Любая помощь будет оценена.

1 Ответ

1 голос
/ 07 мая 2019
  1. итерация файлов с для и использование ~n модификатора
  2. используйте подстроку s, чтобы получить последние 3 места из строки (необходимо скопировать в обычную переменную)
  3. используйте set / a для удаления начальных нулей, вычитая 1000 из значения, которому предшествует 1
  4. как 2. + 3. выполняется внутри блока кода, для этого также требуется отложенное расширение

:: Q:\Test\2019\05\07\SO_56025594.cmd
@Echo off&SetLocal EnableDelayedExpansion
Set "Source=A:\Test"
Set "Target=A:\Test\File"

for %%F in ("%Source%\*.dcm") do (
   Set "file=%%~nF"
   Set /A "No=1!file:~-3! -1000"
   if not exist "%Target%!No!ab" MD "%Target%!No!ab"
   copy "%%~F" "%Target%!No!ab"
)

Пример дерева после запуска над партией:

> tree /F
A:.
└───test
    │   xxx009.dcm
    │   xxx010.dcm
    │   xxx011.dcm
    │
    ├───File10ab
    │       xxx010.dcm
    │
    ├───File11ab
    │       xxx011.dcm
    │
    └───File9ab
            xxx009.dcm
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...