У меня проблемы с этим скриптом.Я объясню ниже кодовый блок.
@Echo off
pushd "\\server\folder"
SETLOCAL EnableDelayedExpansion
@FOR /F "TOKENS=2" %%A IN ('WHERE /T "testfiles*.*"') DO @(
set fdate123=%%A
echo !fdate123:~5,9!0!fdate123:~0,1!!fdate123:~2,2!
call StringLen !fdate123!
)
pause
:StringLen
Setlocal EnableDelayedExpansion
:: strLen String [RtnVar]
:: -- String The string to be measured, surround in quotes if it contains spaces.
:: -- RtnVar An optional variable to be used to return the string length.
Set "s=#%~1"
Set "len=0"
For %%N in (4096 2048 1024 512 256 128 64 32 16 8 4 2 1) do (
if "!s:~%%N,1!" neq "" (
set /a "len+=%%N"
set "s=!s:~%%N!"
)
)
Endlocal&if "%~2" neq "" (set %~2=%len%) else echo %len%
Exit /b
То, что я пытаюсь сделать, это получить дату изменения файла и изменить формат этой даты, возвращенной на ГГГГММДД.Я хочу, чтобы измененная дата была добавлена к имени файла.У меня могут быть файлы из нескольких дней в этой папке, и каждый файл может иметь свою дату изменения даты.
Пожалуйста, не помечайте это как дублирующий вопрос, потому что я не мог найти этот подход для этого здесь.
Я пытался проверить длину строки даты, чтобы я мог обрабатывать даты, такие как 01.01.2009 (длина 8) против 13.01.2009 (длина 9) против 01.10.2009 (длинаиз 9) против 22.10.2009 (длина 10), а затем с помощью операторов if соответствующим образом анализируют дату с помощью чего-то вроде! fdate123: ~ 5,9 !! fdate123: ~ 0,1 !! fdate123: ~ 2,2!- Я еще не закончил.
Я пытался получить дату с помощью dir /T:W testfiles*.*
и запустить findstr, но я недостаточно хорошо понимаю findstr, чтобы сделать это.
Я тоже пытался вытащить его из forfiles /M BC_Services_Adjustment* /C "cmd /c echo @fdate"
и от этого тоже ушел.
возможно, у кого-то есть лучшее решение, я думаю, что сейчас у меня беспорядок.Кто-нибудь знает, как получить метку времени изменения даты для каждого файла в папке, преобразовать ее в переменную в формате ГГГГММДД, а затем добавить ее во все файлы в папке?
Примечание: яНе ищите решения PowerShell для этого вопроса, не тратьте свое время на публикацию ответов PowerShell.
Обновление № 2 (21.05.19) Я попробовал код magoo, яМне все еще нужно решение для переименования файлов.
@echo off
pushd "\\server\folder"
SETLOCAL EnableDelayedExpansion
FOR /F "TOKENS=2" %%A IN ('WHERE /T "*.csv"') DO (
for /f "tokens=1-3delims=/-." %%i in ("%%A") do (
set "mm=00%%i"&set "dd=00%%j"&set "yy=0000%%k"
set "fdate123=!yy:~-4!!mm:~-2!!dd:~-2!"
)
rem echo to test if date modified matches to the right filenames.
echo !fdate123! ^& %%A
rem ren "%%~nxA" "%%~nxA!fdate123!"
)
pause
Я пробовал с ren "%%~nxA" "%%~nxA!fdate123!"
, но файл не найден.Наверное, супер просто. Если кто-то может заставить код magoo сделать переименование, а не просто повторить дату, я могу назначить награду за этот вопрос.