У меня есть следующий скрипт
, который хорошо работает с файлами с простыми именами.
Но файлы, которые мне нужны, имеют следующий шаблон имен:
(. # A # - ## - ## - ## ABCD-ABCD - ## abc_abcdef_a # - ## - ##)
в основном комбинация букв, цифр, одного периода, тире, дефиса и одной запятой и без пробелов
где вы видите символ # - цифры.
Начальные номера (#.) От 0 до 10000.
имена файлов имеют длину от 72 до 76 символов в зависимости от их номера ID.
все они одного типа (но это не имеет значения, скрипт не зависит от расширения)
выдает ошибку:
Синтаксис команды неверен.
Мне кажется, проблема в том, что имена файлов начинаются с цифры или имеют точку в имени.
Я не могу удалить ни один из символов, сами имена файлов также являются частью данных.
Я попытался использовать chcp 65001 вверху файла, но это не имеет значения.
Я очень новый пакетный сценарий и не знаю, как обойти эту проблему. Я попытался найти ошибку, но это похоже на общую ошибку msg.
@echo off
set /a counter=1
set /a filesperfolder=100
cd dir\dir_main
:loopstart
set dirname=subdir%counter%
md %dirname%
echo %dirname%
dir /b | findstr /v /i "subdir*"> %temp%\temp.txt && for /l %%l in (1,1,%filesperfolder%) do @for /f "tokens=1,2* delims=:" %%a in ('findstr /n /r "^" %temp%\temp.txt ^| findstr /r "^%%l:"') do @move %%b %dirname%\%%b >nul
set /a counter=%counter%+1
for /f "tokens=*" %%a in ('type %temp%\temp.txt ^| find /c /v ""') do set _filesmoved=%%a
del %temp%\temp.txt
IF %_filesmoved% LSS 100 goto done
goto loopstart
:done
cls
echo All files were moved!!
pause
exit
Проблема не в количестве файлов, а в именах файлов.
Скрипт не имеет проблем с простыми (как и все буквы) именами файлов.