Тема: CMD/BAT: Расфасовка файлов
Написал скриптик для расфасовки файлов по первому символу по папкам.
cmd /v:on
@echo off
for /f "delims=" %%i in ('DIR /AH/AS/AL/AR/AI/AA /b') DO (
set temp=%%i
mkdir !temp:~0,1!
@rem echo move "%%i" !temp:~0,1!
move "%%i" !temp:~0,1!
)
Не дружит с именами, которые содержат символ '!' (возможно, можно еще кое-где подловить).
Как можно вылечить сей недостаток в скрипте, а не сторонними методами (типа группового переименования файлов, как я сделал)?
Если есть идеи по улучшению, высказывайте, функциональность нужная). (Например, мне не нравиться отбор файлов DIR /AH/AS/AL/AR/AI/AA /b).
Параметр /v : on включает связывание времени выполнения, из-за чего символ '!' начинает обрабатываться как "особый".
Если же запустить без него то переменная temp получает значение только один раз(а не при каждой итерации, как говорит интуиция(об этом написано в set /?)). Тогда не получается выделить один символ из переменной %%i, надо сделать что-то наподобие %i:~0,1%, но так не работает (значение переменной берется %%i).
'DIR /AH/AS/AL/AR/AI/AA /b' заменяется 'DIR /A-D /B'.