Bat для префикса имен файлов с символами папки и суффиксом с датой

Я полный новичок, когда дело доходит до вещей bat/cmd. Я могу сделать самые основы с небольшой помощью Google! и когда я имею в виду базовый, я имею в виду xcopy, robocopy и т. д.

Я пытаюсь написать код, который извлечет первые 5 символов из текущей папки и переименует файлы в подпапке, но также суффикс с текущей датой.

Так что это в основном то, что я пытаюсь сделать.

W:\12345_folder Это основная папка, из которой я хочу извлечь 12345.

W:\12345_folder\subfolder Это место для файлов, которые нужно переименовать

Текущее имя файлов в подпапке следующее

file1.txt file2.txt file3.txt

После переименования они должны быть такими, как показано ниже.

12345 file1 2014-10-02.txt 12345 file2 2014-10-02.txt 12345 file3 2014-10-02.txt

Все мои усилия были напрасны. Я могу получить дату, используя это. Но он переименовывает все имя файла и не сохраняет существующее имя файла.

for /f "tokens=1-5 delims=/ " %%d in ("%date%") do rename "*.txt" %%g%%f-%%e-%%d.txt

И я также играл с этим:

for %%z in ("%cd%") do ( for %%a in ("%%~dpz%\.") do ( rename "**.txt" "%%~nxa-.txt"))

Но опять же, это перезаписывает все имя файла и не сохраняет существующее имя файла.

Я должен еще раз подчеркнуть, что я полный новичок, поэтому будьте нежны, и ваша помощь очень ценится.


person Legg1979    schedule 02.10.2014    source источник
comment
Мне удалось добавить суффикс к именам файлов с датой, используя следующий код. @ECHO OFF for /f "tokens=1-5 delims=/ " %%d in ("%date%") DO (SET TODAY=%%f-%%e-%%d) for %%a in (*.txt) do ren "%%~a" "%%~na %TODAY%%%~xa" Теперь мне просто нужна помощь с именами префиксов папок   -  person Legg1979    schedule 03.10.2014
comment
Правильно получил переименование имени папки, работающее for %%z in ("%cd%") do ( for %%a in ("%%~dpz%\.") do ( for %%i in (*.pdf,*.xlsx,*.docx,*.xlsm) do move "%%i" "%%~nxz_ %%i")) Что было бы очень полезно, если бы этот код брал только 1-е 5 символов из имени папки. Это единственное, что мне осталось сделать сейчас, поэтому любая помощь будет отличной. Я уверен, что это очень просто для тех, кому не повезло. Я даже не совсем уверен, как мне удалось заставить работать приведенный выше код!   -  person Legg1979    schedule 03.10.2014


Ответы (1)


Проблема заключается в том, что команда RENAME в Windows имеет некоторые ошибки, в частности, с назначением префиксов и суффиксов (см. Нижнюю ссылку).

Я дал только часть ответа, потому что не смог заставить дату работать как суффикс. Но это позволит вам префикс имен файлов в каталоге с префиксом по вашему выбору, включая дату.

Я попытался заставить работать решение «дата как суффикс», но мне не удалось выполнить следующее в моей версии cmd:

    REN *.txt ????????????????abc.txt.x
    REN *.x *

Возвращает: неверное имя

Вот мое альтернативное решение, чтобы добавить дату префикса. Для первого пакетного примера создайте два пакетных файла:

renprefix.bat

    %4
    FOR %%v IN (%1) DO CALL %0 %1 %2 %%v GOTO:Part2
    ATTRIB -h %2%1
    GOTO End
    :Part2
    REN %3 %2%3
    ATTRIB +h %2%3
    :End

Затем используйте приведенный выше пакетный файл в своем примере:

rendate.bat

    for /f "tokens=1-5 delims=/ " %%d in ("%date%") do renprefix.bat *.txt %%g%%f-%%e-%%d

Источник: http://www.lagmonster.org/docs/DOS7/z-ren1.html "4. Добавление префикса"

person Ganeshvara    schedule 02.10.2014
comment
Я благодарю за ответ. Я не мог получить эту работу. Я также попробовал несколько примеров из ссылки, но все еще не работает. Вроде ничего не переименовывает. Очень запутался сейчас. - person Legg1979; 03.10.2014