В связи с этим есть некоторые неопределенные или похожие вопросы, которые я постарался собрать изо всех сил, но не уверен, правильно ли я это сделал или нет.
Цель пакетного файла - найти дату в именах файлов, создать папку, в которой месяц и год даты этого имени файла указаны с префиксом «01», и переместить ее туда. Расположение созданной папки будет на один уровень выше, где будут находиться текущие файлы журналов. Если имя папки уже существует с префиксом «01», но имеет другой месяц и год, она создаст папку с префиксом « 02 ", и если он уже существует, то он будет продолжать создавать один с префиксом" 03 ", и это будет продолжаться до тех пор, пока он не найдет больше папок с префиксом, который пытается создать, который уже занят и переходит к создайте папку месяца с этим неиспользуемым префиксом.
Теперь код, это то, что у меня сейчас:
SETLOCAL ENABLEDELAYEDEXPANSION
for %%a in (*.log) do (
if exist *-10-2017*.log (
if exist 01* && not *01*.log (
set "iter="
set /p iter=01
set /a iter+=1
set f1=!%inter%" October"!
md "..\!f1!"
move "%%a" "!f1!"
) else (
md "01 October 2017" 2>nul
move "%%a" "01 October 2017"
)
)
)
Это только на октябрь 2017 года, так что нужно проверить дату имени файла журнала, если в любом месте имени файла указано «-10-2017», создать папку «01 октября 2017» в каталоге над текущим и переместить там, при условии, что не существует другой папки с именем 01 мая 2017 года, например, или любой другой папки, начинающейся с имени 01 (кроме уже созданной папки назначения, в этом случае пакет просто переместит файл без необходимости создавать отдельную папку с тот же месяц и год, но с другим префиксом, который не нужен, поэтому я не хочу папок «01 октября 2017» и «02 октября 2017», если уже существует, например, 01 октября 2017 года), он должен быть крутым и если он есть, он будет повторяться до тех пор, пока не найдет неиспользуемое число, каждый раз набирая +01, а затем продолжит использовать его в качестве префикса.
Но это не работает, потому что я остановился на:
E:\SteamCMD\KFServer\UserLogs\11\unread\test>SETLOCALENABLEDELAYEDEXPANSION
&& was unexpected at this time.
Я уже нашел рабочую часть, откуда я ее модифицировал:
SETLOCAL ENABLEDELAYEDEXPANSION
for %%a in (*.log) do (
set f=%%a
set g=!f:~92,10!
md "!g!" 2>nul
move "%%a" "!g!"
)
)
Но он просто перемещает их в соответствующие папки с датами, где я хочу, чтобы они были в соответствии с соглашением об именовании месяцев и на один уровень выше, а также для добавления префикса 01 к именам папок для легкой сортировки и поиска для последующего поиска. .... также другая проблема с этим, если другой журнал того же месяца и года, но другого дня проходит (например, 15-10-2017 .log и 10-10-2017 .log), это будет в их собственной папке, создающей больше беспорядка, когда я могу просто группировать журналы по месяцам, а не по отдельным дням ....
Таким образом, у меня остается два варианта - поднять руки вверх или просто использовать рабочую партию, но вручную выполнить дополнительные задачи, чтобы закончить ее ..... так что да, предпочтительно, я бы хотел, чтобы компьютер делает все это для меня с наименьшими усилиями от меня, поэтому, пожалуйста, помогите мне с этим или исправьте мой код и объясните, почему это неправильно или что это должно быть так ...
☺
С уважением,
Новый (oo) b Кодер