Запустив dir /?
, вы увидите переключатель порядка /o
, принудительно введя его по имени, и он изменит порядок, как и ожидалось.
По умолчанию порядок будет таким:
006-006
006
007-007
008-008
008
выполнив dir /on
, вы заставляете его упорядочить по имени:
006
006-006
007-007
008
008-008
Поэтому мы просто меняем команду dir
в цикле for:
('dir /s/b /on %root%\*.tif')
Затем,Я думаю, что для перемещения файлов было бы проще всего не менять свой сценарий.Возможно, просто запустите цикл в конце файла, чтобы переместить файлы, эта демонстрация делает это, увеличивая число в папке, но вам нужно будет настроить его в соответствии с вашими потребностями, поскольку оно не будет хранить последнее значение !cnt!
дляследующий запуск.
Так что нам понадобится в конце скрипта:
timeout 2>nul
set /a cnt=1
for /f "tokens=1-3 delims=," %%i in (%csv%) do (
mkdir %%ifolder!cnt!>nul
move %%i%%j %%ifolder!cnt!
move %%i%%k %%ifolder!cnt!
set /a cnt+=1
)
Приведенный выше цикл for читает файл csv, разбивает его на 3 токена (%% i- %% k) и использовать ,
delimeter.Затем мы просто используем токены для выполнения команды перемещения для перемещения файлов.Таким образом, это в значительной степени разделяет его как таковой от вашего CSV:
D:\somedir,007-007.tif,008.tif
до
D:\somedir --> %%i
007-007.tif --> %%j
008.tif --> %%k
Вы можете получить более подробную информацию об этом, запустив for /?
из cmd.exe