Я пытаюсь создать пакетный скрипт в Windows 7, чтобы сделать следующее:
У меня есть папка, в которую другая программа сбрасывает файлы. Все файлы имеют номера в своем имени вместе с другой идентифицирующей информацией. Я хотел бы, чтобы пакетный скрипт выполнял поиск всех цифр в имени файла, а затем создавал папку (имя папки — это просто цифры) и перемещал все файлы, содержащие эти цифры, в папку. Это должно быть применимо к многочисленным пользователям в моем офисе.
в настоящее время у меня работает очень плохая примитивная система, которая не учитывает ошибки:
@echo off
setlocal enabledelayedexpansion
pushd "%USERPROFILE%\Desktop\RawFiles"
for %%a in (*) do (
set fldr=%%~na
set fldr=!fldr:~0,5!
md "!fldr!"
move "%%a" "!fldr!"
)
popd
if not exist "%USERPROFILE%\Dropbox\agents" mkdir "%USERPROFILE%\Dropbox\agents"
SET "src_folder=%USERPROFILE%\Desktop\RawFiles"
SET "tar_folder=%USERPROFILE%\Dropbox\agents"
for /f %%a IN ('dir "%src_folder%" /b') do move /-y %src_folder%\%%a %tar_folder%
exit
the files in the "rawfiles" folder are as follows:
12345 - tech pack.pdf
12345.pdf
12345-artwork.AI
"#12345- artwork.AI"
То, что я создал, работает только для идеальных случаев, когда числа идут первыми в файлах и равны ровно 5. К сожалению, здесь много человеческих ошибок, поэтому это решение нежизнеспособно. пример ошибки - случайное 6-значное число или вообще постановка знака "#" перед цифрами
Я также хотел бы иметь возможность переопределить файлы в папке назначения, запустив это дважды, но получаю «отказано в доступе».
Пожалуйста помоги!
Благодарность