Почему это не работает:
Давайте разберем вашу команду:
Ваша команда переведена в ren "C:\Users\j1sunx\Desktop\test\201810.txt" "*1811*"
. Эта страница объясняет, как оценивается *1811*
:
* c Сопоставляет все исходные символы от текущей позиции до последнего вхождения c (жадное совпадение с учетом регистра) и добавляет сопоставленное совпадениенабор символов для целевого имени.Если c не найден, то все остальные символы из источника добавляются, после чего следует c. Это единственная известная мне ситуация, когда сопоставление шаблонов файлов Windows чувствительно к регистру
Первый * с 1 будетсопоставлять что-либо до последней 1 строки: так C:\Users\j1sunx\Desktop\test\20181
.
Затем мы добавляем 810
, которые являются простыми символами без специальных значений.
* В концеof sourceMask - добавляет все оставшиеся символы из источника в цель.Если уже в конце источника, то ничего не делает.
Тогда конец имени файла
Всего: C:\Users\j1sunx\Desktop\test\20181810.txt
Ключ в том, что первый*
очень жадный.
Решение по замене:
Поскольку вы уже используете VBA, я предлагаю вам использовать операторы / функции vbaнапример Dir и Имя или FileSystemObject
Пример решения (может потребоваться улучшение)
ChDir mydate
myline = Dir("*" & prvdate & "*")
While myline <> vbNullString
Name myline As Replace(myline, prvdate, valdate)
myline = Dir()
Wend