Использование цикла FOR для переименования файлов с отметкой даты.Получение ошибки «Дублированное имя файла существует или файл не найден». - PullRequest
0 голосов
/ 03 мая 2019

Я пытаюсь написать командный файл, который будет переименовывать каждый файл .txt в папке, в которой он находится, чтобы включить в имя отметку даты.Я получил его точно так же, как и должен, но когда я пытаюсь сделать то же самое с переименованием или xcopy, я получаю «Дублированное имя файла существует, или файл не найден».

Я новичок впартия, и я не могу понять, что здесь происходит.Может быть, небольшая проблема с синтаксисом?

@echo off
setlocal enabledelayedexpansion
goto :main

:main
    for /f "delims=" %%a in ('wmic OS Get localdatetime  ^| find "."') do set dt=%%a

    set YYYY=%dt:~0,4%
    set MM=%dt:~4,2%
    set DD=%dt:~6,2%
    set HH=%dt:~8,2%
    set Min=%dt:~10,2%
    set Sec=%dt:~12,2%
    set stamp=!YYYY!-!MM!-!DD!___!HH!:!Min!:!Sec!

    echo !stamp!
    echo.

    FOR %%G IN (*.txt) DO (

        echo going to rename %%~nxG
        echo it will become  !stamp!___%%~nxG
        ren %%~nxG !stamp!___%%~nxG
        echo.
    )

    pause
goto :eof

1 Ответ

0 голосов
/ 04 мая 2019

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

@Echo Off
SetLocal DisableDelayedExpansion
Set "stamp="
For /F "Tokens=1-6Delims=/: " %%A In ('""%__AppDir__%Robocopy.exe" : : /NJH /L"'
)Do If Not Defined stamp Set "stamp=%%A-%%B-%%C___%%D.%%E.%%F"
If Not Defined stamp GoTo :EOF
For %%A In ("*.txt")Do If "%%~xA"==".txt" (Echo(&Echo going to rename %%~nxA
    Echo it will become %stamp%___%%~nxA&Ren "%%~nxA" "%stamp%___%%~nxA")
Pause
GoTo :EOF

Обратите внимание, что вам может понадобиться какая-то система фильтрации, чтобы предотвратить любые последующие запуски скриптаобрабатывать те же файлы, увеличивая их имена еще на 24 символов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...